不知道这段代码有什么问题。它表示连接属性未初始化 [英] Dont know what's the problem with this code. It says connection property not initialized

查看:71
本文介绍了不知道这段代码有什么问题。它表示连接属性未初始化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  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 your connection to command 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 the OleDbCommand 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆