连接属性未初始化

时间:2012-05-29 15:43:03

标签: c# connection oledb

我一直在尝试许多不同的命令和安排。这是一个将新联系人输入数据库的简单程序。我的第一个数据库东西我有简单的文本框,只接受字母,然后只接受数字的邮政编码。不确定为什么我的“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();

1 个答案:

答案 0 :(得分:3)

更改此行:

OleDbCommand comm = new OleDbCommand();

......对这两行:

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

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

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

OleDbCommand comm = new OleDbCommand(command, conn);