这是错误:
异常详细信息:System.NullReferenceException:不是对象引用 设置为对象的实例。
它停在这里:con.Open();
这是代码:
SqlConnection con = new SqlConnection(DBHelper.connection);
SqlCommand com = new SqlCommand();
con = com.Connection;
con.Open();
com.CommandType = CommandType.Text;
com.CommandText = "select catname,catdescription,photo from category where catid=" + catselectddl.SelectedValue ;
SqlDataReader dr= com.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
DataRow drr;
drr=dt.Rows[0];
con.Close();
错误:
Line 19: SqlCommand com = new SqlCommand();
Line 20: con = com.Connection;
Line 21: con.Open(); // here the error
Line 22: com.CommandType = CommandType.Text;
Line 23: com.CommandText = "select catname,catdescription,photo from category where catid=" + catselectddl.SelectedValue
答案 0 :(得分:2)
第三行是错误的。它应该是
com.Connection = con;
答案 1 :(得分:2)
您需要更改此行(此时com.Connection
为null
):
con = com.Connection;
到此:
com.Connection = con;
答案 2 :(得分:2)
您以错误的顺序分配连接。您应该将在第一行创建的连接分配给SqlCommand,而不是将SqlCommand(尚未创建)的连接分配给您之前创建的SqlConnection变量。
SqlConnection con = new SqlConnection(DBHelper.connection);
con.Open();
SqlCommand com = new SqlCommand();
com.Connection = con
在执行命令之前,您还应检查连接状态以确保其成功打开。
答案 3 :(得分:0)
试试这个:
SqlConnection con = new SqlConnection(DBHelper.connection);
SqlCommand com = con.CreateCommand();
con.Open();
com.CommandType = CommandType.Text;
com.CommandText = "select catname,catdescription,photo from category where catid=" + catselectddl.SelectedValue ;
SqlDataReader dr= com.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
DataRow drr;
drr=dt.Rows[0];
con.Close();
您实际上是在尝试从命令创建连接 - 需要为命令分配连接,反之亦然。
我还建议使用我喜欢的“使用”语法,它也会处理命令和连接。
using (SqlConnection con = new SqlConnection(DBHelper.connection))
{
using(SqlCommand com = con.CreateCommand())
{
con.Open();
com.CommandType = CommandType.Text;
com.CommandText = "select catname,catdescription,photo from category where catid=" + catselectddl.SelectedValue ;
SqlDataReader dr= com.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
DataRow drr;
drr=dt.Rows[0];
}
}
答案 4 :(得分:0)
“选择catname,catdescription,照片来自catid =”+ catselectddl.SelectedValue
的类别旁注:
这种类型的SQL脚本,如果变成习惯,将打开SQL-Injection
的大门;我认为没有开发人员喜欢这种类型的漏洞...