麻烦大家帮我看看下面的代码有什么问题,我调用ExecuteScalar(string SelectSql)方法,怎么老提示:ExecuteScalar: Connection property has not been initialized.-------------------------
public object ExecuteScalar(string SelectSql)
{
OleDbCommand command = new OleDbCommand();
command.Connection = objConn;
command.CommandType = CommandType.Text; try
{
OpenConn();
command.CommandText = SelectSql;
return command.ExecuteScalar();
}
catch(Exception ex)
{
throw ex;
}
finally
{
CloseConn();
}
} string strConn;
public string ConnectionString
{
get
{
return strConn;
}
set
{
strConn = value;
}
} private OleDbConnection objConn;
public OleDbConnection Conn
{
get
{
try
{
objConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strConn);
return objConn;
}
catch
{
return null;
}
}
} public void OpenConn()
{
if (objConn == null)
{
objConn = Conn;
} if (objConn.State == ConnectionState.Closed)
{
objConn.Open();
}
} public void CloseConn()
{
if (objConn != null)
{
if (objConn.State != ConnectionState.Closed)
{
objConn.Close();
}
}
}
拜托了,下班前得搞定,谢谢

解决方案 »

  1.   

    try
    {
    OpenConn();
    // ==>
    command.Connection = objConn;
    // ==<
    command.CommandText = SelectSql;
    return command.ExecuteScalar();
    }
      

  2.   

    因为刚开始command.Connection被赋值为null (这个时候objConn为null);
    虽然后来objConn被改变了,但是command.Connection没有变化 :)
      

  3.   

    看错误提示是连接未初始化,Conn这个只读属性,如果外部没引用的话,我想不必要。
    试试command.Connection = Conn;
      

  4.   

    command.Connection = objConn;
    改成:command.Connection = Conn;即可..