将数据添加到我的数据库中C#

时间:2013-12-08 12:48:57

标签: c# sql-server

尝试将数据添加到数据库时出错。 *进一步了解更多细节。

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

感谢任何帮助。

3 个答案:

答案 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);