【问题标题】:get an error as ExecuteNonQuery:Connection property has not been initialized由于 ExecuteNonQuery:Connection 属性尚未初始化而收到错误
【发布时间】:2010-07-31 23:21:19
【问题描述】:
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Samples\\login.mdb";
String uname, pass;
uname = textBox1.Text;

pass = textBox2.Text; 
OleDbConnection myConnection = new OleDbConnection(connectionString);
myConnection.Open();

String query = "insert into LOGIN_TABLE (UserName, Password) VALUES ('" +
    textBox1.Text.ToString() + "','" + textBox2.Text.ToString() + "') ";


OleDbCommand myCommand = new OleDbCommand();
myCommand.CommandText = query;
OleDbParameter myParm = myCommand.Parameters.Add("@uname", OleDbType.VarChar, 50);
myParm.Value = textBox1.Text;

myParm = myCommand.Parameters.Add("@pass", OleDbType.VarChar, 50);
myParm.Value = textBox2.Text;

myCommand.ExecuteNonQuery();
myConnection.Close();

【问题讨论】:

  • query 只是乞求进行 SQL 注入...你意识到你没有使用参数,是吗?

标签: c#


【解决方案1】:

你还没有告诉你的OleDbCommand使用哪个数据库连接。

尝试这样做:

OleDbCommand myCommand = new OleDbCommand(query, myConnection);

然后不要在下一行设置CommandText 属性。

更新: Marc 是对的,您甚至没有使用您的参数,因为您的查询定义不适合所谓的准备好的语句。试试这个:

string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Samples\\login.mdb";

using (OleDbConnection myConnection = new OleDbConnection(connectionString))
{
    myConnection.Open();

    string query = "INSERT INTO LOGIN_TABLE (UserName, Password) VALUES (?, ?)";

    OleDbCommand myCommand = new OleDbCommand(query, myConnection);

    myCommand.Parameters.Add("UserName", OleDbType.VarChar, 50);
    myCommand.Parameters.Add("Password", OleDbType.VarChar, 50);

    myCommand.Parameters[0].Value = textBox1.Text;
    myCommand.Parameters[1].Value = textBox2.Text;

    myCommand.Prepare();
    myCommand.ExecuteNonQuery();
}

我摆脱了一些不必要的分配,并设置了一些不同的命令参数。试一试,如果这能解决您的问题,请告诉我。

【讨论】:

  • try string query = "INSERT INTO LOGIN_TABLE (UserName, Password) VALUES (@username, @password)";还要更改 myCommand.Parameters.Add("UserName", OleDbType.VarChar, 50);进入 myCommand.Parameters.Add("@Username", OleDbType.VarChar, 50);
猜你喜欢
  • 2013-10-21
  • 1970-01-01
  • 2016-06-12
  • 2012-02-23
  • 1970-01-01
  • 2011-08-10
  • 2013-08-03
  • 2014-04-20
  • 1970-01-01
相关资源
最近更新 更多