2012-05-29 155 views
1

我一直在尝试很多不同的命令和安排。这是一个将新联系人输入到数据库的简单程序。我的第一个数据库东西我有简单的文本框,只接受字母,然后只接受数字的邮政编码。不确定为什么我的“executenonquery()”说“Connection属性尚未初始化”。我错过了什么?连接属性未初始化

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

您是否尝试从连接字符串中删除双斜线? 此外,您可能会在SQL语句中遇到错误,因为我不认为“州/省”或“邮编”是有效的列名称。尝试用方括号'[]' – jaressloo

+0

围绕它们给出“未知的转义序列”。 – marcmiller2007

回答

3

改变这一行:

OleDbCommand comm = new OleDbCommand(); 

...这两行:

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

你的命令对象需要有一个开放的连接的引用(我们通过得到使用带连接对象的构造函数),并且你的命令对象也需要设置其命令文本属性(否则系统不知道你试图运行什么查询)。

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

OleDbCommand comm = new OleDbCommand(command, conn); 
+0

现在它说OleDbCommand comm = new OleDbCommand(conn);有一些无效的论点。 – marcmiller2007

+1

并删除OleDbDataAdapter不需要和不使用 – Steve

+0

@ marcmiller2007:我更新了我的答案。 – MusiGenesis

相关问题