按钮不会保存到数据库出现异常错误

Posted

技术标签:

【中文标题】按钮不会保存到数据库出现异常错误【英文标题】:button wont save to database it comes to exception error 【发布时间】:2013-12-19 14:02:51 【问题描述】:

我创建了一个带有 3 个文本框和 1 个下拉列表以及一个保存按钮的 asp.net 站点,每次单击它时,它都会返回 Bon-Temps.dll 中出现“System.NullReferenceException”类型的异常但未处理在用户代码中。

它在代码行上给出了这个错误 DataRow drow = ds.Tables["OpdrachtGever"].NewRow();

我的问题是为什么??

 SqlConnection cnn = new SqlConnection();
       cnn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["BT-1ConnectionString"].ConnectionString;
    cnn.Open();
    SqlCommand cmd = new SqlCommand();
    cmd.CommandText = "select * from  OpdrachtGever";
    cmd.Connection = cnn;
    SqlDataAdapter da = new SqlDataAdapter();
    da.SelectCommand = cmd;
    DataSet ds = new DataSet();
    da.Fill(ds, "OpdrachtGever");
    SqlCommandBuilder cb = new SqlCommandBuilder(da);
    DataRow drow = ds.Tables["OpdrachtGever"].NewRow();
    drow["Naam"] = TextBox1.Text;
    drow["Adres"] = TextBox2.Text;
    drow["PostCode"] = TextBox3.Text;
    drow["AantalPersonen"] = DropDownList1.SelectedItem;


    ds.Tables["OpdrachtGever"].Rows.Add(drow);
    da.Update(ds, "OpdrachtGever");

【问题讨论】:

【参考方案1】:

您已将表命名为

da.Fill(ds, " OpdrachtGever ");
             ^             ^

但是你用

来引用它
DataRow drow = ds.Tables["OpdrachtGever"].NewRow();

没有任何空格。

这一行也有一个流氓空间

ds.Tables["OpdrachtGever "].Rows.Add(drow);
                        ^

在您的表名中包含这些空格不是一个好主意,因为它们对我们(人类)没有意义并且容易忘记。但是,对于表集合的索引器,空格会有所不同。因此,当您传递带有错误或缺少空格的名称时,索引器将无法找到您的表并返回 null

【讨论】:

编辑了那个但没有帮助解决第一个问题需要输入连接字符串的名称而不是完整的字符串。 在 da.Fill 上有同样的问题。不要在表名周围放置空格。 将其更改为但仍挂在同一行 现在它在以下行关闭 drow["AantalPersonen"] = DropDownList1.SelectedItem;出现错误无法将“System.Web.UI.WebControls.ListItem”类型的对象转换为“System.IConvertible”类型。无法在 AantalPersonen 列中存储 。预期类型为十进制。 好吧,现在这是一个不同的错误。 SelectedItem 是一个对象,其确切性质取决于您如何填充组合。

以上是关于按钮不会保存到数据库出现异常错误的主要内容,如果未能解决你的问题,请参考以下文章

想要将更改保存到数据库时出现异常

带有核心数据未捕获的 NSExeption 类型异常的 SIGABRT

图片在保存的时候===》出现这个异常:GDI+ 中发生一般性错误

java io流 运行错误时,保存异常到文件里面

20-异常处理

捕获异常