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

1 に答える 1

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 ステートメントを削除して、スローされているエラーを確認し、使用している言語を指定してください。

于 2012-08-14T03:06:50.863 に答える