【问题标题】:ExecuteNonQuery: Connection property not initializedExecuteNonQuery:连接属性未初始化
【发布时间】:2017-07-21 04:00:17
【问题描述】:

如何解决 ExecuteNonQuery:连接属性未初始化。我已经做了我的 cmd.Connection = con;这是我的代码,请帮忙

Private void button1_Click(object sender, EventArgs e)
{
    if (img_file != null)
    { 

FileStream fs = new FileStream(img_file, System.IO.FileMode.Open, System.IO.FileAccess.Read);
        byte[]image = new byte[fs.Length];

        fs.Read(image,0,Convert.ToString(fs.Length));
        fs.Close();
        SqlCommand cmd = new SqlCommand("INSERT INTO member_details (name,address,email,phone_number,picture) VALUES('"+textBox1.Text+"', '"+textBox2.Text+"', '"+textBox3.Text+"', @pic)", con);
        SqlParameter prm = new SqlParameter("@pic", SqlDbType.VarBinary, image.Length, ParameterDirection.Input, false, 0,0, null, DataRowVersion.Current, image);
        cmd.Parameters.Add(prm);
        cmd.Connection = con;
        cmd.ExecuteNonQuery();
        con.Close();
    }
}

【问题讨论】:

  • 嗨,欢迎来到堆栈溢出。请参阅How to Ask 链接以获取有关如何提出问题并相应更新您的问题的更多详细信息。
  • 格式化代码并贴出来
  • 两件事,你在哪里初始化连接对象“con”,第二件事,你不需要设置 cmd.Connection= con 因为你已经将它作为参数传递给 SqlCommand 构造函数初始化
  • @Sujith:再来一个,小心sqlInjection
  • @un-lucky 是的。不要将文本框值直接添加到查询中,而是将查询参数化或使用带参数的 SP

标签: c# sql .net


【解决方案1】:

您可以使用以下代码作为参考来修复您的代码:

string connetionString = null;
SqlConnection cnn ;
SqlCommand cmd ;
string sql = null;

connetionString = "Data Source=ServerName;Initial Catalog=DatabaseName;User ID=UserName;Password=Password";
sql = "Your SQL Statemnt Here";

cnn = new SqlConnection(connetionString);
try
{
    cnn.Open();
    cmd = new SqlCommand(sql, cnn);
    cmd.ExecuteNonQuery();
    cmd.Dispose();
    cnn.Close();
    MessageBox.Show (" ExecuteNonQuery in SqlCommand executed !!");
}
catch (Exception ex)
{
    MessageBox.Show("Can not open connection ! ");
}

您可以通过

简单地初始化和关闭连接
using(SqlConnection con = new SqlConnection(connectionstring))
{
--write all your command n execution code here---;
}

除此之外,一个建议是,您需要使用参数化查询或带有参数的存储过程来避免 SQLInjection:

对 SQLInjection 的引用:https://www.veracode.com/security/sql-injection

【讨论】:

    猜你喜欢
    • 2012-05-03
    • 2011-07-22
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多