2013-12-08 82 views
-3

試圖將數據添加到我的數據庫時出現錯誤。 *進一步瞭解更多細節。將數據添加到我的數據庫中C#

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();

拋出運行時錯誤:

型「System.NullReferenceException」未處理的異常發生在AllIn1Database.exe

我下面這個教程C# Adding to databases

任何幫助表示讚賞。

回答

0

在你的方法中,你沒有創建一個對象「ds」。所以發生Null引用異常是因爲你試圖在非對象上運行一個方法(null)。

請閱讀本教程的前幾部分。這一個解釋,其中「DS」來源於: http://www.homeandlearn.co.uk/csharp/csharp_s12p7.html

+0

如果' ds'被聲明爲超出範圍? –

+0

這樣做完全沒有。錯誤現在說'無法實例化對象,以及之前的錯誤。 – user3079557

0

問題:那是因爲你已經從index 1創造了創建的coumns但卻行列從index 0開始。

解決方案:您需要創建index 0row列。

試試這個:

DataRow row = ds.Tables[0].NewRow(); 
row[0] = regname.Text; 
row[1] = regpass.Text; 
ds.Tables[0].Rows.Add(row); 
+0

Unfortuunatley沒有工作,我沒有料到它,因爲行[0 ]涉及數據庫註冊表的ID。 – user3079557

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;