当前位置: 代码迷 >> C# >> C#winform大家帮小弟我看一段代码,纠一个错
  详细解决方案

C#winform大家帮小弟我看一段代码,纠一个错

热度:126   发布时间:2016-05-05 05:24:38.0
C#winform大家帮我看一段代码,纠一个错
 try
                {
                    string StudentNo = textBox1.Text;
                    string BookID = textBox2.Text;
                    string ReturntTime = dateTimePicker1.Text;
                    string a;
                    SqlCommand sqlCommand1, sqlCommand2, sqlCommand3;
                    sqlCommand1 = new SqlCommand();
                    sqlCommand2 = new SqlCommand();
                    sqlCommand3 = new SqlCommand();
                    myConnection = new SqlConnection();
                    myConnection.Open();
                    a = sqlCommand1.CommandText = "select RentTime from SB where StudentNo = '" + StudentNo + "' and BookID='" + BookID + "'";
                    sqlCommand2.CommandText = "delete from SB where StudentNo='" + StudentNo + "' and BookID='" + BookID + "' and RentTime='" + a + "'";
                    sqlCommand3.CommandText = "insert into SB values('" + textBox1.Text + "','" + textBox2.Text + "','" + a + "', '" + dateTimePicker1.Text + "')";
                    int cmdresults = sqlCommand1.ExecuteNonQuery();
                    int cmdresultss = sqlCommand2.ExecuteNonQuery();
                    int cmdresultsss = sqlCommand3.ExecuteNonQuery();
                    sqlDataAdapter = new SqlDataAdapter();
                    sqlDataAdapter.SelectCommand = sqlCommand1;
                    sqlDataAdapter.SelectCommand = sqlCommand2;
                    sqlDataAdapter.SelectCommand = sqlCommand3;
                    SqlCommandBuilder builder = new SqlCommandBuilder(sqlDataAdapter);
                    myConnection.Close();
                    if (cmdresults == 1 && cmdresultss == 1 && cmdresultsss == 1)
                        MessageBox.Show("成功!");
                }
                catch (Exception ee) { MessageBox.Show("保存数据失败:" + ee.Message); }
            }
这段代码在运行时提示ConnectionString属性尚未初始化(连接数据库已成功)
------解决思路----------------------
没设置连接字符串啊
sqlDataAdapter = new SqlDataAdapter();
你这是建立了一个新对象,这个对象跟ConnectionString完全没任何关系
要么在new的时候传入,要么new完设置sqlDataAdapter.ConnectionString
------解决思路----------------------
sqlCommand1 = new SqlCommand();
这个也一样,没跟myConnection关联起来
myConnection本身也只是new了一个对象,没有传入数据库连接字符串
------解决思路----------------------
你最好还是上网找一个完整的例子,不要自己拍脑袋瞎写
跟你简单讲一下套路,不管是哪种数据库,哪种连接方式
你需要先有一个数据库连接字符串
然后new一个数据库连接对象,使用这个字符串去连接对应的数据库
然后new一个数据库操作对象(Reader或Command),让它使用前面new的数据库连接对象,然后做进一步的操作
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

已经在Load里连接数据库了
 try
                {
                    string StudentNo = textBox1.Text;
                    string BookID = textBox2.Text;
                    string ReturntTime = dateTimePicker1.Text;
                    string a;
                    a = sqlCommand.CommandText = "select RentTime from SB where StudentNo = '" + StudentNo + "' and BookID='" + BookID + "'";
                    sqlCommand.CommandText = "delete from SB where StudentNo='" + StudentNo + "' and BookID='" + BookID + "' and RentTime='" + a + "'";                    
                    sqlCommand.CommandText = "insert into SB values('" + StudentNo + "','" + BookID + "','" + a + "', '" + ReturntTime + "')";                    
                    int cmdresults = sqlCommand.ExecuteNonQuery();
                    sqlDataAdapter.SelectCommand = sqlCommand;
                    SqlCommandBuilder builder = new SqlCommandBuilder(sqlDataAdapter);                    
                    if (cmdresults == 1)
                        MessageBox.Show("成功!");
                }
                catch (Exception ee) { MessageBox.Show("保存数据失败:" + ee.Message); }
改过的代码,大家再帮我看看,谢谢


这么写也不对。
还是要从基本看起,不然的话就算那里copy了段代码也都会因为概念不明白而改错。
你可以去msdn看看connection和command的资料,再加上dataset/datatable,你这段代码就可以写正确了。

  string a;
                    a = sqlCommand.CommandText = "select 。。。。。 这段代码能编译通过? 
------解决思路----------------------
myConnection = new SqlConnection();
你这不是又把它重新实例化了,你在load里实例化的那个没有用上
建议还是多参考人家现成的代码
基本都是应该将访问数据库的部分封装到类里去,访问数据库的函数体内部新建一个连接,增删改查后释放连接,而不是全局公用一个连接
这样你使用的时候只要传入sql语句就好了,不要去关心每一次执行不同的增删改查如何建立连接,如何释放连接,只会把代码搞乱
  相关解决方案