存储过程(Visual Studio ASP.Net 2005 C#)

存储过程(Visual Studio ASP.Net 2005 C#),c#,sqlconnection,sqlcommand,C#,Sqlconnection,Sqlcommand,我创建了一个名为“usp_insertempdata”的存储过程,将数据插入名为“Employee”的数据库表中,因此我执行了该过程,当我保存数据时,会出现一个异常: “ConnectionString属性尚未初始化。 请帮忙! 这是我的密码 SqlConnection _SqlConnection = new SqlConnection ( ); string strConnectionString = ""; SqlCommand cmd = new SqlCommand ( );

我创建了一个名为“usp_insertempdata”的存储过程,将数据插入名为“Employee”的数据库表中,因此我执行了该过程,当我保存数据时,会出现一个异常: “ConnectionString属性尚未初始化。 请帮忙! 这是我的密码

    SqlConnection _SqlConnection = new SqlConnection ( );
string strConnectionString = "";
SqlCommand cmd = new SqlCommand ( );

strConnectionString = @"Server='bisweb\bisweb';Database=x_kgabo;Trusted_Connection=true;";

Int32 rowsAffected;

List<object> lstParams = new List<object> ( );

cmd.Parameters.Add ( new SqlParameter ( "@vchEmployeeNo", SqlDbType.VarChar ) );
cmd.Parameters [ "@vchEmployeeNo" ].Value = txtEmployeeNumber.Text;
cmd.Parameters.Add ( new SqlParameter ( "@vchSurname", SqlDbType.VarChar ) );
cmd.Parameters [ "@vchSurname" ].Value = txtSurname.Text;
cmd.Parameters.Add ( new SqlParameter ( "@vchFirstName", SqlDbType.VarChar ) );
cmd.Parameters [ "@vchFirstName" ].Value = txtFirstName.Text;
cmd.Parameters.Add ( new SqlParameter ( "@vchPosition", SqlDbType.VarChar ) );
cmd.Parameters [ "@vchPosition" ].Value = txtPosition.Text;
cmd.Parameters.Add ( new SqlParameter ( "@vchIdNumber", SqlDbType.VarChar ) );
cmd.Parameters [ "@vchIdNumber" ].Value = txtIdNumber.Text;
cmd.Parameters.Add ( new SqlParameter ( "@vchGender", SqlDbType.VarChar ) );
cmd.Parameters [ "@vchGender" ].Value = drpdwnGender.SelectedItem.Value;
cmd.Parameters.Add ( new SqlParameter ( "@vchRace", SqlDbType.VarChar ) );
cmd.Parameters [ "@vchRace" ].Value = drpdwnRace.Text;
cmd.Parameters.Add ( new SqlParameter ( "@vchEmail", SqlDbType.VarChar ) );
cmd.Parameters [ "@vchEmail" ].Value = txtEmail.Text;
cmd.Parameters.Add ( new SqlParameter ( "@iBranchNo", SqlDbType.VarChar ) );
cmd.Parameters [ "@iBranchNo" ].Value = txtBranchNo.Text;
cmd.Parameters.Add ( new SqlParameter ( "@bHasMentor", SqlDbType.VarChar ) );
cmd.Parameters [ "@bHasMentor" ].Value = drpdwnMentor.Text;
cmd.Parameters.Add ( new SqlParameter ( "@vchMentorName", SqlDbType.VarChar ) );
cmd.Parameters [ "@vchMentorName" ].Value = txtMentorName.Text;
cmd.Parameters.Add ( new SqlParameter ( "@vchMentorStaffNo", SqlDbType.VarChar ) );
cmd.Parameters [ "@vchMentorStaffNo" ].Value = txtMentorStaffNo.Text;
cmd.Parameters.Add ( new SqlParameter ( "@dtMentorDate", SqlDbType.VarChar ) );
cmd.Parameters [ "@dtMentorDate" ].Value = calMentorDate.SelectedDate;

cmd.CommandText = "usp_insertempdata";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = _SqlConnection;

_SqlConnection.Open ( );

rowsAffected = cmd.ExecuteNonQuery ( );

_SqlConnection.Close ( );

try
{
    _SqlConnection.ConnectionString = strConnectionString;
    _SqlConnection.Open ( );

}
catch ( Exception ex )
{
    //throw  ex;
    messagefunctions ( );
    lblError.Text = "There was a problem inserting a record into the database, please consult with systems administrators " + ex.Message.ToString ( );
}
finally
{
    if ( _SqlConnection != null )
        _SqlConnection.Close ( );
}
SqlConnection\u SqlConnection=newsqlconnection();
字符串strConnectionString=“”;
SqlCommand cmd=newsqlcommand();
strConnectionString=@“Server='bisweb\bisweb';数据库=x_kgabo;Trusted_Connection=true;";
Int32-rowsAffected;
List lstParams=新列表();
cmd.Parameters.Add(新的SqlParameter(“@vchEmployeeNo”,SqlDbType.VarChar));
cmd.Parameters[“@vchEmployeeNo”].Value=txtEmployeeNumber.Text;
cmd.Parameters.Add(新的SqlParameter(“@vchSurname”,SqlDbType.VarChar));
cmd.Parameters[“@vchSurname”].Value=txtnamname.Text;
cmd.Parameters.Add(新的SqlParameter(“@vchFirstName”,SqlDbType.VarChar));
cmd.Parameters[“@vchFirstName”].Value=txtFirstName.Text;
cmd.Parameters.Add(新的SqlParameter(“@vchPosition”,SqlDbType.VarChar));
cmd.Parameters[“@vchPosition”].Value=txtPosition.Text;
cmd.Parameters.Add(新的SqlParameter(“@vchIdNumber”,SqlDbType.VarChar));
cmd.Parameters[“@vchIdNumber”].Value=txtIdNumber.Text;
cmd.Parameters.Add(新的SqlParameter(“@vchGender”,SqlDbType.VarChar));
cmd.Parameters[“@vchGender”].Value=drpdwnGender.SelectedItem.Value;
cmd.Parameters.Add(新的SqlParameter(“@vchRace”,SqlDbType.VarChar));
cmd.Parameters[“@vchRace”].Value=drpdwnRace.Text;
cmd.Parameters.Add(新的SqlParameter(“@vchEmail”,SqlDbType.VarChar));
cmd.Parameters[“@vchEmail”].Value=txtEmail.Text;
cmd.Parameters.Add(新的SqlParameter(“@iBranchNo”,SqlDbType.VarChar));
cmd.Parameters[“@iBranchNo”].Value=txtBranchNo.Text;
cmd.Parameters.Add(新的SqlParameter(“@bHasMentor”,SqlDbType.VarChar));
cmd.Parameters[“@bHasMentor”].Value=drpdwnMentor.Text;
cmd.Parameters.Add(新的SqlParameter(“@vchMentorName”,SqlDbType.VarChar));
cmd.Parameters[“@vchMentorName”].Value=txtMentorName.Text;
cmd.Parameters.Add(新的SqlParameter(“@vchMentorStaffNo”,SqlDbType.VarChar));
cmd.Parameters[“@vchMentorStaffNo”].Value=txtMentorStaffNo.Text;
cmd.Parameters.Add(新的SqlParameter(“@dtMentorDate”,SqlDbType.VarChar));
cmd.Parameters[“@dtMentorDate”].Value=calMentorDate.SelectedDate;
cmd.CommandText=“usp\u insertempdata”;
cmd.CommandType=CommandType.storedProcess;
cmd.Connection=\u SqlConnection;
_Open();
rowsAffected=cmd.ExecuteNonQuery();
_SqlConnection.Close();
尝试
{
_SqlConnection.ConnectionString=strConnectionString;
_Open();
}
捕获(例外情况除外)
{
//掷骰子;
messagefunctions();
lblError.Text=“将记录插入数据库时出现问题,请咨询系统管理员”+ex.Message.ToString();
}
最后
{
if(_SqlConnection!=null)
_SqlConnection.Close();
}

问题似乎在于,在调用ExecuteOnQuery之后以及第一次调用Open之后,您正在分配连接字符串。第二次调用毫无意义。
正确的顺序是:

cmd.CommandType = CommandType.StoredProcedure;
_SqlConnection.ConnectionString = strConnectionString;
cmd.Connection = _SqlConnection;

try
{
    _SqlConnection.Open ( );

    rowsAffected = cmd.ExecuteNonQuery ( );

    _SqlConnection.Close ( );
}

问题似乎在于,您在调用ExecuteOnQuery和第一次调用Open之后分配连接字符串。第二次调用毫无意义。
正确的顺序是:

cmd.CommandType = CommandType.StoredProcedure;
_SqlConnection.ConnectionString = strConnectionString;
cmd.Connection = _SqlConnection;

try
{
    _SqlConnection.Open ( );

    rowsAffected = cmd.ExecuteNonQuery ( );

    _SqlConnection.Close ( );
}

您正在设置连接字符串:

strConnectionString = @"Server='bisweb\bisweb';Database=x_kgabo;Trusted_Connection=true;";
(顺便说一句:我认为您不应该在服务器名称周围使用任何单引号)

但是您永远不会将它分配给您的
SqlConnection

更改代码,使连接字符串实际用于
SqlConnection
对象!另外-始终使用(..){..}块将
SqlConnection
SqlCommand
放入

string strConnectionString = @"Server=bisweb\bisweb;Database=x_kgabo;Trusted_Connection=true;";
string storedProcName = "usp_insertempdata";

using(SqlConnection _SqlConnection = new SqlConnection(strConnectionString))
using(SqlCommand cmd = new SqlCommand(storedProcName, _SqlConnection))
{
    cmd.CommandType = CommandType.StoredProcedure;

    Int32 rowsAffected;

    ......
}

您正在设置连接字符串:

strConnectionString = @"Server='bisweb\bisweb';Database=x_kgabo;Trusted_Connection=true;";
(顺便说一句:我认为您不应该在服务器名称周围使用任何单引号)

但是您永远不会将它分配给您的
SqlConnection

更改代码,使连接字符串实际用于
SqlConnection
对象!另外-始终使用(..){..}
块将
SqlConnection
SqlCommand
放入

string strConnectionString = @"Server=bisweb\bisweb;Database=x_kgabo;Trusted_Connection=true;";
string storedProcName = "usp_insertempdata";

using(SqlConnection _SqlConnection = new SqlConnection(strConnectionString))
using(SqlCommand cmd = new SqlCommand(storedProcName, _SqlConnection))
{
    cmd.CommandType = CommandType.StoredProcedure;

    Int32 rowsAffected;

    ......
}

连接字符串永远不会传递给SqlConnection对象,尽管在对Cmd进行Exec调用之前连接已打开(尝试),请查看try上方的3行{statement有什么?当然不是连接字符串的赋值。我更新了我的答案。连接字符串从未传递给SqlConnection对象,尽管在对Cmd执行调用之前连接已打开(尝试),请查看try上方的3行{statement有什么?当然不是连接字符串的赋值。我更新了我的答案。谢谢!你的答案清晰明了,我理解你的意思,我非常感谢。所以我按照你说的更改了我的代码,我遇到了另一个异常:将数据类型varchar转换为bit时出错。请你帮助我如何修复此问题。@kgabo:这表示您的一个参数可能是SQL Server中的
BIT
类型,您传入的
VARCHAR
值无法转换为
BIT
。请检查您的参数!谢谢Marc,我检查了我的参数,发现我没有使用正确的语法(\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu)。已检查)从复选框中获取值。我的问题已解决。非常感谢您和所有试图帮助我的人…干杯谢谢!您的回答清晰明了,我理解您的意思,我非常感谢。因此,我按照您所说的更改了代码,我遇到了另一个异常:将数据类型varchar转换为bit时出错。请原谅请参阅有关如何修复此问题的帮助。@kgabo:这将表明您的一个参数可能是