DataReader, 求高手啊,
--------------------编程问答-------------------- 问题不明确…… --------------------编程问答-------------------- DataReader.Close();conn.Close() //数据库连接
最佳实践用
using(...........)
{....................} --------------------编程问答-------------------- 你先看下数据库 执行之后一定要关闭连接 然后就是把问题说明白一点 --------------------编程问答-------------------- 没图啊! --------------------编程问答-------------------- 图我就算是弄不上去了,
这是代码,错误的地方
public static ArticleData GetArticleDataByIds(long id)
{
string sql = "SELECT * FROM ArticleData WHERE Id = @Id";
try
{
int articleClass = -1;
using (SqlDataReader reader = DBHelper.GetReader(sql, new SqlParameter("@Id", id)))
{
if (reader.Read())
{
ArticleData articleData = new ArticleData();
if (reader["Id"] != DBNull.Value)
articleData.Id = (long)reader["Id"];
if (reader["Title"] != DBNull.Value)
articleData.Title = (string)reader["Title"];
if (reader["ArticleImage"] != DBNull.Value)
articleData.ArticleImage = (string)reader["ArticleImage"];
if (reader["Intro"] != DBNull.Value)
articleData.Intro = (string)reader["Intro"];
if (reader["Video"] != DBNull.Value)
articleData.Video = (string)reader["Video"];
if (reader["Txt"] != DBNull.Value)
articleData.Txt = (string)reader["Txt"];
if (reader["AddTime"] != DBNull.Value)
articleData.AddTime = (DateTime)reader["AddTime"];
if (reader["IsCharge"] != DBNull.Value)
articleData.IsCharge = (bool)reader["IsCharge"];
if (reader["IsVideo"] != DBNull.Value)
articleData.IsVideo = (bool)reader["IsVideo"];
if (reader["ClickCout"] != DBNull.Value)
articleData.ClickCout = (int)reader["ClickCout"];
if (reader["ArticleClass"] != DBNull.Value)
articleClass = Convert.ToInt32(reader["ArticleClass"]); //FK
reader.Close();
reader.Dispose();
articleData.ArticleClass = ArticleClassService.GetArticleClassByClassID(articleClass);
return articleData;
}
else
{
reader.Close();
reader.Dispose();
return null;
}
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
throw e;
}
}
--------------------编程问答-------------------- 应该是2所说的问题,我之前也遇到过,conn数据库连接打开后用完要关闭,同时datareader 用完后也要关闭。本地因为用户少没问题,用户多了超出数据库连接个数 --------------------编程问答-------------------- 那你是怎么解决的呢, 我现在没有一个好的办法啊, --------------------编程问答-------------------- 所有的SqlDataReader 用完之后我都加了关闭也用了using (){} 就是不行啊, --------------------编程问答-------------------- http://photo2.bababian.com/upload5/20110210/324BFA02072E5600E33C532270B4B1E7.jpg
http://photo2.bababian.com/upload5/20110210/92335A8B39471C90FC14556A64202CF7.jpg
这个就是报错的图片,帮我看一眼吧, --------------------编程问答-------------------- 去网上下个强壮的DBHelper 你的DBHelper估计太瘦弱了... --------------------编程问答--------------------
--------------------编程问答-------------------- My 咕滴
你们数据库访问太落伍了。啥年代了还写这样的代码。
至少用个微软的企业库吧,Entity Framework个人感觉灰常不错,结束数据访问恶梦。 --------------------编程问答-------------------- SqlDataReader 要先关闭,再执行ExecuteNonQuery操作
using (SqlConnection cn = new SqlConnection(“”))
{
SqlCommand cmd1 = new SqlCommand("", cn);
cn.Open();
using (SqlDataReader dr1 = cmd1.ExecuteReader())
{
while (dr1.Read())
{
string sql= "";
SqlConnection conn2 = new SqlConnection("");
SqlCommand cmd2 = new SqlCommand(sql, conn2 );
cmd2.ExecuteNonQuery();
}
}
}
补充:.NET技术 , ASP.NET