1

私はこれのために多くの異なるコマンドと配置を試してきました。これは、データベースに新しい連絡先を入力するためのシンプルなプログラムです。私の最初のデータベースのもの。文字のみを受け入れる単純なテキストボックスと、数字のみを受け入れる郵便番号があります。「executenonquery()」に「接続プロパティが初期化されていません」と表示される理由が正確にはわかりません。私は何が欠けていますか?

    string connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Documents and Settings\\Sales\\My Documents\\Google Drive\\Home\\Contacts\\Contacts.accdb";
        string command = "INSERT INTO [Contacts] (First Name, Last Name, Address, City, State/Province, ZIP/Postal Code) VALUES (@fname, @lname, @address, @city, @state, @zip)";
        OleDbConnection conn = new OleDbConnection(connection);
        OleDbCommand comm = new OleDbCommand();
        OleDbDataAdapter da = new OleDbDataAdapter();
        conn.Open();
        comm.Parameters.AddWithValue("@First Name", fname);
        comm.Parameters.AddWithValue("@Last Name", lname);
        comm.Parameters.AddWithValue("@Address", address);
        comm.Parameters.AddWithValue("@City", city);
        comm.Parameters.AddWithValue("@State/Province", state);
        comm.Parameters.AddWithValue("@ZIP/Postal Code", zip);
        comm.ExecuteNonQuery();
        conn.Close();
4

1 に答える 1

3

この行を変更します。

OleDbCommand comm = new OleDbCommand();

...これらの2行に:

OleDbCommand comm = new OleDbCommand(conn);
comm.commandText = command;

コマンド オブジェクトには、開いている接続 (接続オブジェクトを受け取るコンストラクターを使用して取得します) への参照が必要であり、コマンド オブジェクトにもコマンド テキスト プロパティを設定する必要があります (そうしないと、システムはどのクエリを実行したかわかりません)。実行しようとしています)。

編集:おっと、しばらくこれらの人を使用していません。実際に必要なのは、次の 1 行だけです。

OleDbCommand comm = new OleDbCommand(command, conn);
于 2012-05-29T15:52:33.670 に答える