string Cstring = "Data Source=(local);Initial Catalog=baoting;Integrated Security=True";
            SqlConnection Mycon = new SqlConnection(Cstring);
            Mycon.Open();
            string m1 = "select * from MagazineInfo where GMID='" + txtGoodsID.Text + "' AND GMName LIKE '%" + txtGoodsName.Text + "%'";
            
            SqlCommand mycom1 = new SqlCommand(m1, Mycon);
            SqlDataReader r1 = mycom1.ExecuteReader();
            r1.Read();
           
            //GID.Text = r1.GetString(0).Trim();
            GName.Text = r1.GetString(1).Trim();
            GNum.Text = r1.GetString(2).Trim();
            GPub.Text = r1.GetString(3).Trim();
            GRe.Text = r1.GetString(4).Trim();
            Mycon.Close();
我每次运行,系统就会崩溃。请高手帮忙啊。看看哪里出错了。

解决方案 »

  1.   

                while(r1.Read())
               {
                //GID.Text = r1.GetString(0).Trim();
                GName.Text = r1.GetString(1).Trim();
                GNum.Text = r1.GetString(2).Trim();
                GPub.Text = r1.GetString(3).Trim();
                GRe.Text = r1.GetString(4).Trim();
               }
    难道查询出来的就只有一条数据吗
      

  2.   

    你应该把你的SQL 语句到查询分析器里执行一遍  看有几个结果
      

  3.   

    数据量不大,但是那个GNum是int型数据。
      

  4.   

    怎么样崩溃
    如果只查询出了一条数据的话应该没问题才对你在Mycon.Close(); 前加上r1.close();  这个关了看看
      

  5.   


    string Cstring = "Data Source=(local);Initial Catalog=baoting;Integrated Security=True";
                SqlConnection Mycon = new SqlConnection(Cstring);
                Mycon.Open();
                string m1 = "select * from MagazineInfo where GMID='" + txtGoodsID.Text + "' AND GMName LIKE '%" + txtGoodsName.Text + "%'";
                
                SqlCommand mycom1 = new SqlCommand(m1, Mycon);
                SqlDataReader r1 = mycom1.ExecuteReader();
               
                //GID.Text = r1.GetString(0).Trim();
                //GName.Text = r1.GetString(1).Trim();
                //GNum.Text = r1.GetString(2).Trim();
                //GPub.Text = r1.GetString(3).Trim();
                //GRe.Text = r1.GetString(4).Trim();
                //Mycon.Close();            if (dr.HasRows )
                {
    r1.Read();
    GName.Text =r1[0].ToString();
    GNum.Text =r1[1].ToString();
    GPub.Text =r1[2].ToString();
    GRe.Text =r1[3].ToString();
    r1.Close();
        }
        else
        {
    r1.Close();
        }
                Mycon.Close();
    改这样试试
      

  6.   

    系统崩溃
    1.你的程序启动的太多了
    再查数据库刚好导致2.你得看看你的数据量
      LIKE 是很耗费内存的3.read哪能不用while呢4.GNum是int型数据
      得转换吧?5.r1.GetString(3).Trim();
      不太理解
      想取字段值?
      r1["字段"].ToString();
      就可以了吧
      

  7.   

    11L  分析的很全面, 学习了。
    这点我还没注意看, 取数据时 r1["字段"].ToString();   
    LZ的r1.GetString("字段")  这种我还没用过捏
      

  8.   

    咱先抛开楼主问的系统崩溃不说,先说下这样的代码系统不崩溃的话能不能用。
    1、sql语句用字符串拼接,这样很危险;
    2、既然like就like出来一条,实在搞不懂为什么还要用like;
    3、r1.GetString[1].Trim()、r1.GetString[2].Trim()...这样写加入没有读到数据Trim()的话岂不是要报错;
    4、未关闭r1;
    5、虽然后面写了Mycon.Close(),顺利运行倒还好,要是中间报什么错误的话,也就没法关闭连接了。把这些问题都解决了,也许楼主说的这个“崩溃”就随之消失了
      

  9.   

    5.r1.GetString(3).Trim(); 这样 他只是 把得到的内容里面有空格的去掉罢了   至于为什么崩溃 上面分析得很好
      

  10.   

    1,可能是数据库死锁了,你的表跟另外的表有连接吗?
    2.SqlDataReader r1 = mycom1.ExecuteReader();不要用只读的试下
      

  11.   

    那怎么得到那个int型的数据啊?r1.getstring()可以吗?我用r1.getint16也不行呢。