同意你的观点,应该有问题:
SqlDataReader Result=myComm.ExecuteReader();
改
SqlDataReader Result=myComm.ExecuteReader(CommandBehavior.CloseConnection);
SqlDataReader Result=myComm.ExecuteReader();
改
SqlDataReader Result=myComm.ExecuteReader(CommandBehavior.CloseConnection);
解决方案 »
- NHibernate三表或三表以上查询。。。
- 求助
- Dropdownlist 的选中值存储后,在另一个页面用Label显示的问题!
- crystal10报表在web页面上无法显示报表的参数值?
- 大家看看,为何我的SQL2000数据库不能更新?
- 刚做的一个b/s软件,用户不能正常打开首页。急,在线等!
- 如何判断父窗口是不是顶级窗口
- 求 Remotesoft Salamander 1.1,以AspnetMenu 1.1正式版(含全部源代码)交换
- 在控制器上未找到公共操作方法“Login”。
- 急:程序打包问题
- OWC.SpreadsheetClass xlssheet=new OWC.SpreadsheetClass;的引用问题?
- 问一个关于TREEVIEW的问题
在sqlserver暂时是没问题!但连接池会满;to: CMIC(大象)
SqlDataReader Result=myComm.ExecuteReader(CommandBehavior.CloseConnection);
这样能得到返回的结果吗?return Result;
好象是得不到返回结果的,所以我认为写书的用法和前提就是错误的;
[email protected]
按照连接池的说法,当你关闭SqlDataReader 时,连接会怎么返回连接池.
这点和DataSet不同的。但是用完后确实要关闭,否则导致连接池资源耗尽!
这样能得到返回的结果吗?return Result;
好象是得不到返回结果的,所以我认为写书的用法和前提就是错误的;
===========================================这样子可以得到数据集的,它执行完 ExecuteReader 就会自动关闭数据库连接你可以下载个IbuySpy 网上商店看看
但ProductList.aspx的写法有问题,用完之后没有
Close.
adapter+dataset就不用
myComm.ExecuteReader(CommandBehavior.CloseConnection)这个方法应该是对的
我也遇到这样的问题,虽然myComm.ExecuteReader(CommandBehavior.CloseConnection)这个方法应该是对的,我也的确是这样写的,但是大概一次同时执行30个左右的SqlDataReader,连续2,3次Sql Server就死了,靠,我那个项目蛮重要的,很烦这件事,到现在我还没有时间去改过来,只好希望别人少执行点查询,查询时动作慢一点,呵呵。
我的想法是用SqlDataAdapter,DataSet来解决这个问题,不过没有测试,不知道大家有什么意见!
如果用DataSet来传递数据,它是什么样的数据,会不会占用很到的内存?
return Result;
=======================================
这个方法是完全可以的,只要在调用完后,在加一句 Result.Close();
就可以了但问题是:Result 中的内容常常会少取一条数据纪录(Result.Read() 就自动跳到下一条记录处了) 至今未能解决,也不明其原因
public void AddNewsLevelRecord(int newsid, string levelUserName)
{
SqlConnection myConection = new SqlConnection(strConn);
SqlCommand newsLevelCommand = new SqlCommand("InsertNewsLevelRecord",myConection);
newsLevelCommand.CommandType = CommandType.StoredProcedure; newsLevelCommand.Parameters.Add(new SqlParameter("@NewsID",SqlDbType.Int,4));
newsLevelCommand.Parameters["@NewsID"].Value = newsid;
newsLevelCommand.Parameters.Add(new SqlParameter("@LevelUserName",SqlDbType.VarChar,2000));
newsLevelCommand.Parameters["@LevelUserName"].Value = levelUserName; try
{
myConection.Open() ;
newsLevelCommand.ExecuteNonQuery() ;
}
catch(System.Data.SqlClient.SqlException er)
{
throw new Exception(er.Message);
}
finally
{
newsLevelCommand.Dispose() ;
myConection.Close() ;
}
}
public void RunProc(string procName, out SqlDataReader dataReader)
{
SqlCommand cmd = CreateCommand(procName, null);
dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
}
我也希望尽量用存储过程,但是数据库要移动的话,这不是很麻烦吗?
{
private SqlDataAdapter dsCommand; private SqlCommand selectCommand;
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(true);
} protected virtual void Dispose(bool disposing)
{
if (! disposing)
return; if (dsCommand != null )
{
if (dsCommand.SelectCommand != null)
{
if( dsCommand.SelectCommand.Connection != null)
dsCommand.SelectCommand.Connection.Dispose();
dsCommand.SelectCommand.Dispose();
}
dsCommand.Dispose();
dsCommand = null;
}
}
}
推荐看看ASP.NET数据库入门经典《乐思》青华大学出版社
用存储过程移植会有问题,但用SQL你就能保证只用标准的,兼容的SQL吗?当然尽可能的标准还是能做到的。数据库移植始终不是一件让人很爽的事。
http://www.csdn.net/develop/Read_Article.asp?Id=25657
我的想法是用SqlDataAdapter,DataSet来解决这个问题,不过没有测试,不知道大家有什么意见!
今天晚上对程序做了完善,发现用DataSet来替代SqlDataReader就可以解决我说的问题了,