不知道这段代码有什么问题。它表示连接属性未初始化 [英] Dont know what's the problem with this code. It says connection property not initialized
问题描述
private void flowButton3_Click(对象发件人,EventArgs e)
{
string pq = sold;
尝试 {
OleDbConnection con = new
OleDbConnection( @ Provider = Microsoft.ACE.OLEDB.12.0; Data Source = D:\ Login App\SmartShop.accdb< /跨度>);
OleDbCommand update = new OleDbCommand( UPDATE项目SET [status] =' + pq + ',WHERE [ItemID] IN( + 字符串 .Join( ,,Array.ConvertAll(strarray,z = > ' + z + '))+ ));
con.Open();
update.ExecuteNonQuery();
con.Close();
}
catch
{
throw ;
}
}
是的,因为你没有介绍你的连接
到命令
对象。这意味着你需要这样做:
string queryString = SELECT OrderID,CustomerID FROM Orders;
使用(OleDbConnection connection = new OleDbConnection(connectionString))
{
OleDbCommand command = new OleDbCommand(queryString,connection);
connection.Open();
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader.GetInt32( 0 )+ , + reader.GetString( 1 ));
}
// 完成阅读后总是调用Close。
reader.Close();
}
所以,如果我想写你的代码,我更喜欢下面的代码:
private void flowButton3_Click( object sender,EventArgs e)
{
string pq = sold;
尝试 {
OleDbConnection con = new
OleDbConnection( @ Provider = Microsoft.ACE.OLEDB.12.0; Data Source = D:\ Login App\SmartShop.accdb< /跨度>);
字符串 update_sql = UPDATE项目SET [ status] =' + pq + ',WHERE [ItemID] IN( + 字符串 .Join( , ,Array.ConvertAll(strarray,z = > ' + z + '))+ ); // 查看您的sql命令
OleDbCommand update = new OleDbCommand(update_sql,con); // 查看您的ADO.net对象
con.Open();
update.ExecuteNonQuery();
con.Close();
}
catch (例外情况)
{
// 在你的catch主体中做一些事情,如下面的
Console.WriteLine(ex.Message);
}
}
还有一次更新,请尝试不要使用空白字符数据库路径并尝试将多个对象和变量用于存储输入参数,因为它们可以帮助您实现卡车,维护和代码可读性。
欲了解更多信息,请阅读口令:
https://msdn.microsoft.com/en-us/library/dw70f090(v = vs.110).aspx [ ^ ]
R,
Aydin
问题是即使你有一个打开的连接,更新
对象也不知道它什么都没有...
您应该在打开连接后添加此行:
update.Connection = con;
https: //msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand.connection(v=vs.110).aspx [ ^ ]
你还没有告诉OleDbCommand
使用什么连接。
试试这个:
private void flowButton3_Click ( object sender,EventArgs e)
{
string pq = sold;
尝试
{
OleDbConnection con = new
OleDbConnection( @ Provider = Microsoft.ACE.OLEDB.12.0; Data Source = D:\ Login App\SmartShop .ACCDB跨度>);
OleDbCommand update = new OleDbCommand( UPDATE项目SET [status] =' + pq + ',WHERE [ItemID] IN( + 字符串 .Join( ,,Array.ConvertAll(strarray,z = > ' + z + '))+ ),con); // 请参阅此处的连接。
con.Open();
update.ExecuteNonQuery();
con.Close();
}
catch
{
throw ;
}
}
private void flowButton3_Click(object sender, EventArgs e) { string pq = "sold"; try{ OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Login App\SmartShop.accdb"); OleDbCommand update = new OleDbCommand("UPDATE Items SET[status] = '" + pq + "', WHERE [ItemID] IN (" + String.Join(",", Array.ConvertAll(strarray, z => "'" + z + "'")) + ")"); con.Open(); update.ExecuteNonQuery(); con.Close(); } catch { throw; } }解决方案Yes it is because you didn`t introduce yourconnection
tocommand
object. which means you need to do like this:
string queryString = "SELECT OrderID, CustomerID FROM Orders"; using (OleDbConnection connection = new OleDbConnection(connectionString)) { OleDbCommand command = new OleDbCommand(queryString, connection); connection.Open(); OleDbDataReader reader = command.ExecuteReader(); while (reader.Read()) { Console.WriteLine(reader.GetInt32(0) + ", " + reader.GetString(1)); } // always call Close when done reading. reader.Close(); }
So, if I want to write your code I prefer the below one:
private void flowButton3_Click(object sender, EventArgs e) { string pq = "sold"; try{ OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Login App\SmartShop.accdb"); String update_sql = "UPDATE Items SET[status] = '" + pq + "', WHERE [ItemID] IN (" + String.Join(",", Array.ConvertAll(strarray, z => "'" + z + "'")) + ")";// see your sql command OleDbCommand update = new OleDbCommand(update_sql,con);// see your ADO.net object con.Open(); update.ExecuteNonQuery(); con.Close(); } catch (Exception ex) { //do something in your catch body like the below Console.WriteLine(ex.Message); } }
One more update, try to don`t use blank char in Database path and try to use several objects and variables for storage input parameters because they can help you in truck, maintenance and code readability.
For more information read the blow link:
https://msdn.microsoft.com/en-us/library/dw70f090(v=vs.110).aspx[^]
R,
Aydin
The problem is that even you have an opened connection,update
object does not know about it nothing...
You should add this line after opening connection:
update.Connection = con;
https://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand.connection(v=vs.110).aspx[^]
You haven't told theOleDbCommand
what connection to use.
Try this :
private void flowButton3_Click(object sender, EventArgs e) { string pq = "sold"; try { OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Login App\SmartShop.accdb"); OleDbCommand update = new OleDbCommand("UPDATE Items SET[status] = '" + pq + "', WHERE [ItemID] IN (" + String.Join(",", Array.ConvertAll(strarray, z => "'" + z + "'")) + ")",con); // see the connection here. con.Open(); update.ExecuteNonQuery(); con.Close(); } catch { throw; } }
这篇关于不知道这段代码有什么问题。它表示连接属性未初始化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!