尝试将数据添加到数据库时出错。 *进一步了解更多细节。
private void button2_Click(object sender, EventArgs e)
{
DataRow row = ds.Tables[0].NewRow();
row[1] = regname.Text;
row[2] = regpass.Text;
ds.Tables[0].Rows.Add(row);
try
{
objConnect.UpdateDatabase(ds);
MaxRows = MaxRows + 1;
inc = MaxRows - 1;
MessageBox.Show("Database updated");
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
}
我更新数据库的方法:
public void UpdateDatabase(System.Data.DataSet ds)
{
System.Data.SqlClient.SqlCommandBuilder cb = new System.Data.SqlClient.SqlCommandBuilder(da_1);
cb.DataAdapter.Update(ds.Tables[0]);
}
该行:
DataRow row = ds.Tables[0].NewRow();
特别是.NewRow();
运行时抛出错误:
AllIn1Database.exe中出现未处理的“System.NullReferenceException”类型异常
我正在关注本教程C# Adding to databases
感谢任何帮助。
答案 0 :(得分:1)
我正在遵循相同的教程,我也被困在同一部分,会喜欢一些帮助。这个问题似乎与DatabaseConnection类中的DataAdapter有关。我得到的错误是“名称'da_1'在当前上下文中不存在:
public System.Data.DataSet MyDataSet()
{
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(strCon);
con.Open();
System.Data.SqlClient.SqlDataAdapter da_1 = new System.Data.SqlClient.SqlDataAdapter(sql_string, con);
System.Data.DataSet dat_set = new System.Data.DataSet();
da_1.Fill(dat_set, "Table_Data_1");
con.Close();
return dat_set;
}
public void UpdateDatabase(System.Data.DataSet ds)
{
System.Data.SqlClient.SqlCommandBuilder cb = new System.Data.SqlClient.SqlCommandBuilder(da_1);
cb.DataAdapter.Update(ds.Tables[0]);
我设法通过在DatabaseConnection类的顶部添加
来解决此问题public static System.Data.SqlClient.SqlDataAdapter da_1;
答案 1 :(得分:0)
在您的方法中,您没有创建对象“ds”。因此,出现Null Reference Exception是因为您尝试在非对象上运行方法(null)。
请阅读本教程的前几部分。这个解释了“ds”来自哪里: http://www.homeandlearn.co.uk/csharp/csharp_s12p7.html
答案 2 :(得分:0)
问题:这是因为您已从Row
创建了已创建index 1
的coumns,但行列从index 0
开始。
解决方案:您需要从row
创建index 0
列。
试试这个:
DataRow row = ds.Tables[0].NewRow();
row[0] = regname.Text;
row[1] = regpass.Text;
ds.Tables[0].Rows.Add(row);