日期:2014-05-16  浏览次数:20522 次

c# vs编程数据库查询出现的问题
在vs编程数据库查询时,出现下面问题:

我是想通过按button2 按钮,通过textbox1 输入单号来查询goods数据库的单号。然后显示在其他三个文本框中。

我的查询程序是这样写的:
 private void button2_Click(object sender, EventArgs e)
        {
            int n = 0;
            SqlConnection conn = new SqlConnection("Data Source=(local);Initial Catalog=goods;Integrated Security=True");
            conn.Open();
            string sql = "select *from goods where 单号="+textBox1.Text;
            SqlCommand cmd = new SqlCommand(sql, conn);
            SqlDataReader obj = cmd.ExecuteReader();
            while (obj.Read())
            {
                n++;
                textBoxNum.Text=Convert.ToString(obj.GetValue(0));
                textBoxName.Text = Convert.ToString(obj.GetValue(1));
                textBoxPhone.Text = Convert.ToString(obj.GetValue(2));
                
            }
            if (n == 0)
                MessageBox.Show("数据库中没有这样的记录!"); 
            conn.Close();
            cmd.Dispose();
        }
但是运行时停在while循环里,提示如下:

"3t“是数据库里面的一个单号。但是如果读的是3t的话那就说明我这个查询白做了。因为表明是按顺序查询。但是我查找的是另外一个元素。。。
还有obj.read()的返回值类型是bool,提示是什么意思?
不知道是什么原因,怎么解决?
很急!!谢谢!!
------解决方案--------------------
string sql = "select *from goods where 单号='"+textBox1.Text +"'";

------解决方案--------------------
你输入的是字符串吗?

另外,你的单号是什么数据类型的,如果是数值类型的,但是你输入了3t,肯定会导致报错的。
------解决方案--------------------
你数据表里面是整型,而你程序是字符串类型 所以报错了。要么把表重新设计,要么对数据进行约束,只能输入整型
------解决方案--------------------
obj.read()本来返回的就是一个bool类型的值阿。。判断是否读取到记录


------解决方案--------------------
string sql = "select *from goods where 单号='"+textBox1.Text +"'";
单号不是int型要加引号。