新手求助~~“无效操作。连接被关闭”。

时间:2022-03-21 20:32:02
string s = "database=privide;server=localhost;integrated security=true";
         SqlConnection conn = new SqlConnection(s);
         string txtcommand = "select * from user where user_name='" + TextBox1.Text + "'and user_key='" + TextBox2.Text + "'";
         SqlDataReader objReader; // 创建DataReader对象
         SqlCommand objSqlCommand = new SqlCommand(txtcommand, conn); // 创建数据库命令对象
         SqlTransaction objSqlTransaction = conn.BeginTransaction();// 开始事务 (提示在这一步无效操作。连接关闭)
         objSqlCommand.Transaction = objSqlTransaction;// 执行操作)
         try
         {
             objReader = objSqlCommand.ExecuteReader(); // 执行DataReader对象
             if (!objReader.Read()) // 获取数据
             { Response.Write("<script language=javascript>alert('用户名或密码错误!');</script>"); }
             else
             {
                 Session["user"] = objReader["user_name"];
                 Session["pwd"] = objReader["user_key"];
                 objReader.Close(); // 关闭DataReader对象
                 Response.Redirect("http://www.baidu.com");
             }
         }
         catch (Exception ex) // 捕获异常
         {
             objSqlTransaction.Rollback(); // 出现异常时,撤消事务
             TextBox1.Text = "Error: " + ex.Message;
         }
         finally
         {
             conn.Close();   // 关闭数据库连接   
         } 
这段代码老是提示有错误“无效操作。连接被关闭”请高手指点迷津,不胜感激。。

8 个解决方案

#1


string s = "database=privide;server=localhost;integrated security=true";
很明显是两节字符串的问题
需要加上用户名和 密码
string s = "database=privide;server=localhost;integrated security=true ;uid=uid;pwd=pwd";

#2


conn  open() 在哪里

#3


1、首先你不需要SqlTransaction,因为你只是单纯的从数据库中取出数据。所以不存在回滚,去掉相关SqlTransaction语句。
2、SqlCommand objSqlCommand = new SqlCommand(txtcommand, conn); // 创建数据库命令对象
后加:conn.Open();//打开数据库连接
3、objReader = objSqlCommand.ExecuteReader();
语句请改成:objReader = objSqlCommand.ExecuteReader 
(CommandBehavior.CloseConnection); 
打开的连接必须及时关闭。
4、最后去掉conn.Close(); // 关闭数据库连接 ,因为使用了CommandBehavior.CloseConnection。

#4


using(SqlConnection conn = new SqlConnection(s))
{
conn.open();

objReader = objSqlCommand.ExecuteReader(CommandBehavior.CloseConnection); 
}

#5


引用 1 楼 hucailin 的回复:
string s = "database=privide;server=localhost;integrated security=true";
很明显是两节字符串的问题
需要加上用户名和 密码
string s = "database=privide;server=localhost;integrated security=true ;uid=uid;pwd=pwd";


支持!

#6


SqlDataReader objReader; // 创建DataReader对象
 conn.Open();
 你数据库连接没打开吧

#7



string s = "database=privide;server=localhost;integrated security=true";
  SqlConnection conn = new SqlConnection(s);
conn.open()//没有打开连接!

#8


谢谢各位朋友的指教,问题已经解决,就是缺少了conn.open();还有[user]。

#1


string s = "database=privide;server=localhost;integrated security=true";
很明显是两节字符串的问题
需要加上用户名和 密码
string s = "database=privide;server=localhost;integrated security=true ;uid=uid;pwd=pwd";

#2


conn  open() 在哪里

#3


1、首先你不需要SqlTransaction,因为你只是单纯的从数据库中取出数据。所以不存在回滚,去掉相关SqlTransaction语句。
2、SqlCommand objSqlCommand = new SqlCommand(txtcommand, conn); // 创建数据库命令对象
后加:conn.Open();//打开数据库连接
3、objReader = objSqlCommand.ExecuteReader();
语句请改成:objReader = objSqlCommand.ExecuteReader 
(CommandBehavior.CloseConnection); 
打开的连接必须及时关闭。
4、最后去掉conn.Close(); // 关闭数据库连接 ,因为使用了CommandBehavior.CloseConnection。

#4


using(SqlConnection conn = new SqlConnection(s))
{
conn.open();

objReader = objSqlCommand.ExecuteReader(CommandBehavior.CloseConnection); 
}

#5


引用 1 楼 hucailin 的回复:
string s = "database=privide;server=localhost;integrated security=true";
很明显是两节字符串的问题
需要加上用户名和 密码
string s = "database=privide;server=localhost;integrated security=true ;uid=uid;pwd=pwd";


支持!

#6


SqlDataReader objReader; // 创建DataReader对象
 conn.Open();
 你数据库连接没打开吧

#7



string s = "database=privide;server=localhost;integrated security=true";
  SqlConnection conn = new SqlConnection(s);
conn.open()//没有打开连接!

#8


谢谢各位朋友的指教,问题已经解决,就是缺少了conn.open();还有[user]。