,ConnectionString属性未初始化,但我正确初始化了。这是我的代码:privatestaticstringconStr=@"DataSource=(LocalDB)v11.0;AttachDbFilename=c:usersaldrindocumentsvisualstudio2013ProjectsMidtermAssignment_RamirezMidtermAssignment_RamirezMasterFile.mdf;IntegratedSecurity=True";SqlConnectionmyCon=newSqlConnection();私人intstudId,年份,单位;私有字符串fName,lName,mName,course,payment;publicvoidinsertRecord(){myCon.Open();SqlCommandinsertInfo=newSqlCommand("spInsertStudentInformation",myCon);insertInfo.CommandType=CommandType.StoredProcedure;insertInfo.Parameters.Add("@studId",SqlDbType.Int).Value=studId;insertInfo.Parameters.Add("@fName",SqlDbType.VarChar).Value=fName;insertInfo.Parameters.Add("@lName",SqlDbType.VarChar).Value=lName;insertInfo.Parameters.Add("@mName",SqlDbType.VarChar).Value=mName;insertInfo.ExecuteNonQuery();myCon.Close();myCon.Open();SqlCommandinsertData=newSqlCommand("spInsertStudentData",myCon);insertData.CommandType=命令类型.StoredProcedure;insertData.Parameters.Add("@studId",SqlDbType.Int).Value=studId;insertData.Parameters.Add("@course",SqlDbType.VarChar).Value=course;insertData.Parameters.Add("@year",SqlDbType.Int).Value=year;insertData.Parameters.Add("@units",SqlDbType.Int).Value=units;insertData.Parameters.Add("@payment",SqlDbType.VarChar).Value=payment;insertData.ExecuteNonQuery();myCon.Close();这是我的按键中的代码:myData.StudId=Convert.ToInt32(txtStudId.Text);myData.FName=txtFName.Text;myData.LName=txtLName.Text;myData.MName=txtMName.Text;myData.Course=cboCourse.SelectedItem.ToString();myData.Year=Convert.ToInt32(cboYear.SelectedItem.ToString());myData.Units=Convert.ToInt32(txtUnits.Text);myData.Payment=cboPayment.SelectedItem.ToString();我的数据.insertRecord();这是我的存储过程:CREATEPROCEDURE[dbo].spInsertStudentData@studIdint,@coursevarchar(50),@yearint,@unitsint,@paymentvarchar(50)ASINSERTINTOStudentDataVALUES(@studId,@course,@year,@units,@payment)返回0创建过程[dbo].spInsertStudentInformation@studIdint,@fNamevarchar(50),@lNamevarchar(50),@mNamevarchar(50)ASINSERTINTOStudentInformationVALUES(@studId,@fName,@lName,@mName)RETURN0我最近在ASP.NET中学习数据库,这就是我正在做的,但我不知道为什么这不行在C#中工作正常错误消息很清楚。SqlConnection对象在尝试打开连接之前需要一个连接字符串。所以在建立连接时需要传递连接字符串或者在打开前设置ConnectionString属性。但我真的建议您开始使用局部连接变量而不是全局变量。并将此声明保留在using语句中privatestaticstringconStr=@"....";publicvoidinsertRecord(){using(SqlConnectionmyCon=newSqlConnection(conStr))using(SqlCommandinsertInfo=newSqlCommand("spInsertStudentInformation",myCon)){myCon.Open();insertInfo.CommandType=CommandType.StoredProcedure;....insertInfo.ExecuteNonQuery();//这里不需要关闭连接....SqlCommandinsertData=newSqlCommand("spInsertStudentData",myCon);insertData.CommandType=CommandType.StoredProcedure;....insertData.ExecuteNonQuery();}}SqlConnection使用连接池基础结构,因此最好有可以由连接池回收而不是为过程保留的局部变量重要资源最后,using语句避免了危险的内存泄漏关闭和处置一次性对象,例如作为连接和命令,如果发生异常,您的代码中还有另一点需要注意。您执行两个相关命令。如果由于某种原因你不能插入学生数据,我确定你不想插入学生信息。这些场景要求打开一个SqlTransaction,保持你的数据原语(这意味着如果任何操作失败你不想改变数据库中的任何东西)使用(SqlConnectionmyCon=newSqlConnection(conStr))使用(SqlCommandinsertInfo=newSqlCommand(“spInsertStudentInformation",myCon)){myCon.Open();使用(SqlTransactionts=myCon.BeginTransaction()){insertInfo.CommandType=CommandType.StoredProcedure;insertInfo.Transaction=ts;....insertData.CommandType=CommandType.StoredProcedure;insertData.Transaction=ts;....insertData.ExecuteNonQuery();ts.Commit();最终的Commit将保留数据库中的所有内容,同时在不调用Commit的情况下退出using块,将自动回滚对表的每个更改您需要将第一行中创建的连接字符串提供给连接构造函数:SqlConnectionmyCon=newSqlConnection(conStr);错误信息很清楚;ConnectionString属性还没有被初始化你可以通过将ConnectionString属性设置为conStr;myCon.ConnectionString=conStr;或者您可以将其指定为构造函数的参数;SqlConnectionmyCon=newSqlConnection(conStr);正如史蒂夫所说;将SqlConnection保存为全局变量不是一个好主意。使用局部变量,并使用using语句来处理连接和命令。以上就是C#学习教程:C#数据库ConnectionString属性未初始化分享全部内容。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注——using(SqlConnectionmyCon=newSqlConnection(conStr))using(SqlCommandinsertInfo=myCon.CreateCommand()){..}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
