1

OleBdCommand を使用して A レコードを Db に挿入していますが、更新が持続しません。

コードはこちら

    public void InsertCandidate(XElement element, ref OleDbDataAdapter adapter, OleDbConnection sqlConnStr)
    {
        if (sqlConnStr.State == ConnectionState.Broken || sqlConnStr.State == ConnectionState.Closed)
            sqlConnStr.Open();

        try
        {
            string query = "Insert Into Candidate Values(@priKey, @Name, @LName, @Phone, @Add)";
            OleDbCommand InsertCandidate = new OleDbCommand(query, sqlConnStr);
            InsertCandidate.Parameters.AddWithValue("priKey", element.Attribute("CAND_NUM").Value);
            InsertCandidate.Parameters.AddWithValue("Name", element.Attribute("CAND_FNAME").Value);
            InsertCandidate.Parameters.AddWithValue("LName", element.Attribute("CAND_LNAME").Value);
            InsertCandidate.Parameters.AddWithValue("Phone", element.Attribute("CAND_PHONE").Value);
            InsertCandidate.Parameters.AddWithValue("Add", element.Attribute("CAND_ADDRESS").Value);
            InsertCandidate.ExecuteNonQuery();
        }
        catch (OleDbException ex)
        {
            MessageBox.Show("A Error occured whilst trying to execute the command.\n" + ex.Message);
        }
    }

例外、エラー、または異常は生成されません。

何かアドバイス

M


私もこれを試しました。

            //InsertCandidate.ExecuteNonQuery();
            adapter.InsertCommand = InsertCandidate;
            adapter.InsertCommand.ExecuteNonQuery();

*皆様ありがとうございます *

エイデンのコードは機能しましたが、トニーの投稿をよく読むべきだったので、彼の答えを受け入れました(彼が最初に言った)

敬具

そして、もう一度ありがとう!

4

2 に答える 2

2

SQL ステートメントをコードから分離して実行し、それが機能することを確認しましたか?

テーブル定義を投稿していないため、insertステートメントでフィールドを指定していない可能性があります。

私は OLEDB の専門家ではありませんが、ネット上で見つけることができるすべての例では、パラメーターの代わりに疑問符を使用しています。次のような SQL ステートメントを試してください。

string query = "Insert Into Candidate Values(?, ?, ?, ?, ?)";

アップデート

OleDBCommand のドキュメントを見ると、エラーが発生した場合は のみがスローされ、 はスローされInvalidOperationExceptionませんOleDbException。この例外ハンドラを追加して、さらに情報が得られるかどうかを確認してください。

または、例外ハンドラーを変更してジェネリックException型をキャッチし、例外が発生するかどうかを確認します。

于 2012-05-17T21:05:20.843 に答える
1
            string query = "Insert Into Candidate Values(?, ?, ?, ?, ?)";
            OleDbCommand InsertCandidate = new OleDbCommand(query, sqlConnStr);
            InsertCandidate.Parameters.AddWithValue("@?", element.Attribute("CAND_NUM").Value);
            InsertCandidate.Parameters.AddWithValue("@?", element.Attribute("CAND_FNAME").Value);
            InsertCandidate.Parameters.AddWithValue("@?", element.Attribute("CAND_LNAME").Value);
            InsertCandidate.Parameters.AddWithValue("@?", element.Attribute("CAND_PHONE").Value);
            InsertCandidate.Parameters.AddWithValue("@?", element.Attribute("CAND_ADDRESS").Value);
            //InsertCandidate.ExecuteNonQuery();
            adapter.InsertCommand = InsertCandidate;
            adapter.InsertCommand.ExecuteNonQuery();

これはうまくいきます!

于 2012-05-17T22:42:42.680 に答える