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

...到这两行:

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

您的命令对象需要引用一个打开的连接(我们通过使用带有连接对象的构造函数来获得),并且您的命令对象还需要设置其命令文本属性(否则系统不知道您查询什么'正在尝试运行)。

编辑:哎呀,有一段时间没有使用这些家伙了。你真正需要的是这一行:

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