当前位置:编程学习 > C#/ASP.NET >>

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估计太瘦弱了... --------------------编程问答--------------------
引用 10 楼 beckapi 的回复:
去网上下个强壮的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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,