使用字符串数组更新数据表作为值

时间:2012-08-13 20:22:43

标签: c# database string datatable arrays

我有一个问题,我尝试使用字符串数组中的值更新数据表的列,然后将这些更新提交到数据库。我调试了这个,认为有错误,但没有抛出异常。

我还设置了我的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();
            }
}

1 个答案:

答案 0 :(得分: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
}

而且,我不确定你使用的语言是什么(假设是基于C#的一些.Net),但是这个“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语句以查看错误它正在抛出并指定您正在使用的语言。