SqlHelper.cspublic static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(connectionString);
try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch
{
conn.Close();
throw;
}
}==========================
在index.aspx.cs里调用string sql = "select * from xinwen where x_id=@Id";
SqlParameter[] commandParameters = new SqlParameter[]
{
new SqlParameter("@Id",SqlDbType.Int),
};
commandParameters[0].Value = Request.QueryString["x_id"];
SqlDataReader mydr = SqlHelper.ExecuteReader(SqlHelper.cing, CommandType.Text, sql, commandParameters);
if (mydr.Read())
{
TextBox1.Text = mydr["x_name"].ToString();
TextBox2.Text = mydr["x_gjc"].ToString();
TextBox3.Text = mydr["x_ly"].ToString();
TextBox4.Text = mydr["x_time"].ToString();
FCKeditor1.Value = mydr["x_nr"].ToString();
}=================
问题是:这个代码运行正常的,现在要问的是,没看到colse();
即如果打开此链接数据库的话,如果不关闭的话,网站会慢死。
比如,类似这样才对啊!
myCmd1.Connection.Open();
SqlDataReader Dr1 = myCmd1.ExecuteReader();
Dr1.Read();
string Count = Dr1["iCount"].ToString();
Dr1.Close();
myCmd1.Connection.Close();
{
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(connectionString);
try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch
{
conn.Close();
throw;
}
}==========================
在index.aspx.cs里调用string sql = "select * from xinwen where x_id=@Id";
SqlParameter[] commandParameters = new SqlParameter[]
{
new SqlParameter("@Id",SqlDbType.Int),
};
commandParameters[0].Value = Request.QueryString["x_id"];
SqlDataReader mydr = SqlHelper.ExecuteReader(SqlHelper.cing, CommandType.Text, sql, commandParameters);
if (mydr.Read())
{
TextBox1.Text = mydr["x_name"].ToString();
TextBox2.Text = mydr["x_gjc"].ToString();
TextBox3.Text = mydr["x_ly"].ToString();
TextBox4.Text = mydr["x_time"].ToString();
FCKeditor1.Value = mydr["x_nr"].ToString();
}=================
问题是:这个代码运行正常的,现在要问的是,没看到colse();
即如果打开此链接数据库的话,如果不关闭的话,网站会慢死。
比如,类似这样才对啊!
myCmd1.Connection.Open();
SqlDataReader Dr1 = myCmd1.ExecuteReader();
Dr1.Read();
string Count = Dr1["iCount"].ToString();
Dr1.Close();
myCmd1.Connection.Close();
解决方案 »
- asp.net网站上传文件出错
- 有关AspNetPager控件查询后,点击后如何返回我选择的页面?请指点!谢谢!
- 初学者问个问题:关于页面弹出对话框.
- iis 里asp.net 文件目录小问题。
- 网页背景图片的问题
- 请问如何用asp来将excel文件导入到数据库中?
- ADO.NET Entity Framework 求教(极度困惑)
- 求助:VS2012 Ultimate 2012 旗舰版 安装后没有MVC模板
- 帮我解决个html的问题,原贴有分,解决了马上给分
- 如何在ASP.NET(C#)编写的网页文件(cs,aspx)中知道客户端下载的程序运行完毕?
- 在Repeater1_DataBinding事件中怎么取Repeater中Label的值
- 后台 return 后,前台布局变了
---------
不好意思,这个地方写错了,应该是Close();
{
throw;
}
finally
{
conn.Close();
}
正常或者异常时都应该关闭连接资源。
{
conn.Close();
}
到底要不要加这个了呢?
finally
{
conn.Close();
}
要不然每次调用的时候 都会打开链接, 而没有关闭
{
using(SqlConnection conn = new SqlConnection(connectionString))
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
}
catch
{ }
using(SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
string sql = "select * from xinwen where x_id=@Id";
SqlParameter[] commandParameters = new SqlParameter[]
{
new SqlParameter("@Id",SqlDbType.Int),
};
commandParameters[0].Value = Request.QueryString["x_id"];
using(SqlDataReader mydr = SqlHelper.ExecuteReader(SqlHelper.cing, CommandType.Text, sql, commandParameters))
{
if (mydr.Read())
{
TextBox1.Text = mydr["x_name"].ToString();
TextBox2.Text = mydr["x_gjc"].ToString();
TextBox3.Text = mydr["x_ly"].ToString();
TextBox4.Text = mydr["x_time"].ToString();
FCKeditor1.Value = mydr["x_nr"].ToString();
}
}
在调用时用using,不用写finally,如2楼所说,阅读器关闭后数据库连接也会关闭。
用了这个代码后,出错:
异常详细信息: System.InvalidOperationException: 阅读器关闭时尝试调用 Read 无效。
{
new SqlParameter("@Id",SqlDbType.Int),
};
这里不报错?
SqlParameter[] commandParameters =
{
new SqlParameter("@Id",SqlDbType.Int)
};
try
{}
cath
{}
finally
{
conn.Close();
}
查询的时候 就不要这个finally
{
conn.Close();
}
你在sqldatareader读取完成数据后
reader.close();
数据库连接就自动关闭了
前提是
cmd.ExecuteReader(CommandBehavior.CloseConnection);
CommandBehavior.CloseConnection必须有
这么简单的问题,回答了大把,还没得出结论。public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(connectionString);
try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch
{
conn.Close();
throw;
}
}
请问,你这个,如果出错有,还有返回值不