A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 熊丽 中级黑马   /  2013-8-8 22:56  /  1662 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 熊丽 于 2013-8-8 23:20 编辑

  1. <p>   using(SqlConnection sqlconn=new SqlConnection(connstr) )
  2.             {
  3.                 using (SqlCommand commd = new SqlCommand())
  4.                 {
  5.                     commd.CommandText = "delete * from Phone";
  6.                     commd.ExecuteNonQuery();
  7.                 }</p><p>            }</p>
复制代码
commd.ExecuteNonQuery();执行这条语句时抛出ExecuteNonQuery: Connection 属性尚未初始化异常
当加入commd.Connection =sqlconn;抛出异常: ExecuteNonQuery 要求已打开且可用的 Connection。连接的当前状态为已关闭。
这是为什么,请问怎么解决


8 个回复

倒序浏览
最好封装一个SQLHelper类方便使用,提供了ExecuteNonQuery(string sql,params SqlParameter[] parameters)等方法。网上有微软提供的最全的SQLHelper类,是Enterprise Library中的一部分。
回复 使用道具 举报

  1. <p>   using(SqlConnection sqlconn=new SqlConnection(connstr) )
  2.             {
  3.                 using (SqlCommand commd = sqlconn.CreateCommand())//这个地方你写错了,不是new Command(),而是sqlconn.CreateCommandd()
  4.                 {
  5.                     commd.CommandText = "delete * from Phone";
  6.                     commd.ExecuteNonQuery();
  7.                 }</p><p>            }</p>
复制代码
回复 使用道具 举报
你上面的代码没有把连接(sqlconn)打开
using(SqlCommand commd=new SqlCommand())
你也没有给你创建的连接(sqlconn)属性初始化。
你可以把上面改写成这样应该就可以了,下面是代码:
  1.             using (SqlConnection sqlconn = new SqlConnection(connstr))
  2.             {
  3.                 sqlconn.Open();
  4.                 using (SqlCommand cmd = sqlconn.CreateCommand())
  5.                 {
  6.                      commd.CommandText = "delete * from Phone";
  7.                      commd.ExecuteNonQuery();
  8.                 }
  9.             }
复制代码
回复 使用道具 举报
高文咪 发表于 2013-8-9 08:42
你上面的代码没有把连接(sqlconn)打开
using(SqlCommand commd=new SqlCommand())
你也没有给你创建的连 ...

using是不需要open()的
回复 使用道具 举报
高文咪 发表于 2013-8-9 08:42
你上面的代码没有把连接(sqlconn)打开
using(SqlCommand commd=new SqlCommand())
你也没有给你创建的连 ...

我在另外一个程序中这样写是可以通过的
回复 使用道具 举报
熊丽 发表于 2013-8-9 08:46
我在另外一个程序中这样写是可以通过的

呵呵,试了下你那种写法,会报出和你一样的错误哦!本人觉得你要先给自己定义的连接创建一个command对象,这样才可以调用command里的方法去完成你下面的操作~~~
回复 使用道具 举报
高文咪 发表于 2013-8-9 09:02
呵呵,试了下你那种写法,会报出和你一样的错误哦!本人觉得你要先给自己定义的连接创建一个command对象 ...

呵呵,O(∩_∩)O谢谢,我试试咯
回复 使用道具 举报
本帖最后由 彭家贰小姐 于 2013-8-9 10:28 编辑

第一个报错:

SqlCommand commd = new SqlCommand() 修改为: SqlCommand commd = sqlconn.CreateCommand()
第二个报错:

添加sqlconn.Open();[不是很清楚楼主using时不open是怎么实现的?希望楼主分享代码]
第三个报错:

delete * from T_Mark 修改为: delete from T_Mark不能加*
最终代码
  1. private void btnConnect_Click(object sender, RoutedEventArgs e)
  2. {
  3. string connstr = ConfigurationManager.ConnectionStrings["dbConnStr"].ConnectionString;
  4. using (SqlConnection sqlconn = new SqlConnection(connstr))
  5. {
  6. sqlconn.Open();
  7. using (SqlCommand commd = sqlconn.CreateCommand())
  8. {
  9. commd.CommandText = "delete from T_Mark";
  10. commd.ExecuteNonQuery();
  11. }
  12. }
  13. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马