2012-08-13 29 views
0

我遇到了一個問題,我嘗試使用字符串數組中的值更新數據表的列,然後將這些更新提交到數據庫。我調試了這個,認爲有錯誤,但沒有拋出異常。使用字符串數組更新數據表作爲值

我還設置了我的adapater的select語句和連接,以便我可以修改最初觸發事件時重新調用的數據。

這是我的代碼(_updateParams字符串數組包含我嘗試更新表和數據庫的值)。

DataSet ds = new DataSet("SearchedRecord"); 
     using (OracleConnection oc = new OracleConnection(DBConnection)) 
     { 
    try 
      { 
       oc.Open(); 

       OracleDataAdapter adap = new OracleDataAdapter(@"SELECT * FROM NEW_DATABASE", oc); 
       adap.FillSchema(ds, SchemaType.Source, "NEW_DATABASE"); 
       adap.Fill(ds, "NEW_DATABASE"); 

       OracleCommandBuilder bld = new OracleCommandBuilder(adap); 

       DataTable dt = ds.Tables["NEW_DATABASE"]; 
       dt.PrimaryKey = new DataColumn[] { dt.Columns["ID"] }; 
       int key = int.Parse(dt.Rows[0]["ID"].ToString()); 

       DataRow dr; 
     dr = dt.Rows.Find(key); 

       dr.BeginEdit(); 
       for (int i = 0; i < _updateParams.Length; i++) 
       { 
        dr[0] = i.ToString(); 
       } 
       dr.EndEdit(); 
       dr.AcceptChanges(); 
       dt.AcceptChanges(); 

       adap.Update(ds, "NEW_DATABASE"); 
       adap.UpdateCommand = bld.GetUpdateCommand(); 
       adap.UpdateCommand.ExecuteNonQuery(); 
       adap.UpdateCommand.Transaction.Commit(); 
      }catch (Exception x) 
      { 
       x.Message.ToString(); 
      } 
} 
+0

嘗試將您的代碼包裝在Try {} catch {}中,並將一些代碼寫入catch部分中的錯誤。 – MethodMan 2012-08-13 22:04:31

+0

它已經在try catch塊中 – technooblet 2012-08-14 01:41:39

+0

根據您的代碼無法判斷您可能想要顯示適用於您發佈的代碼的所有代碼,否則其他人會認爲/推薦相同的東西。您得到了什麼異常? – MethodMan 2012-08-14 01:45:15

回答

0

嗯,首先,當你添加的字符串值,你實際上並沒有這樣做:

for (int i = 0; i < _updateParams.Length; i++){ 
    dr[0] = i.ToString(); //You need to change this to _updateParams[i].ToString(); 
          //And also concatenate it with "+" for example 
} 

而且也,我不知道你使用的是什麼語言(假設是一些.Net基於像C#),但不應該這樣「dr [0]」是這樣的「dr('YourColumName')」,所以最後你的代碼應該看起來像這樣:

String tmp = ""; 
for (int i = 0; i < _updateParams.Length; i++){ 
    tmp = tmp + _updateParams[i].ToString(); //The ToString is not needed if the _updateParams is a String array already 
} 

dr("YourColumnName") = tmp; 

希望它有幫助,但如果沒有,請刪除您的try catch語句以查看錯誤它正在拋出並指定您正在使用的語言。