我创建了一个名为“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 ( );
}
答案 0 :(得分:1)
您正在设置连接字符串:
strConnectionString = @"Server='bisweb\bisweb';Database=x_kgabo;Trusted_Connection=true;";
(顺便说一下:我相信你不应该在服务器名称周围使用任何单引号)
但您永远不会将其分配给SqlConnection
!
更改您的代码,以便实际在您的SqlConnection
对象中使用连接字符串!另外 - 始终将SqlConnection
和SqlCommand
放入using(....) { .... }
块....
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;
......
}
答案 1 :(得分:0)
问题似乎是在调用ExecuteNonQuery之后和第一次调用Open之后分配连接字符串。第二个电话是胡说八道 正确的顺序是:
cmd.CommandType = CommandType.StoredProcedure;
_SqlConnection.ConnectionString = strConnectionString;
cmd.Connection = _SqlConnection;
try
{
_SqlConnection.Open ( );
rowsAffected = cmd.ExecuteNonQuery ( );
_SqlConnection.Close ( );
}