2012-08-13 58 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语句以查看错误它正在抛出并指定您正在使用的语言。