C#中我用查询条件语句查询一个表,然后显示在listview里面,语句如下,可是显示错误。我是菜鸟,求解
表设计表内容错误提示代码如下:privatevoidbutton1_Click(objectsender,EventArgse){using(SqlConnectionc...
表设计
表内容
错误提示
代码如下:
private void button1_Click(object sender, EventArgs e)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand("select * from 图书信息 where 图书名="+textBox1 .Text ,conn );
listView1.Items.Clear();
try
{
conn.Open();
SqlDataReader r = cmd.ExecuteReader();
while (r.Read())
{
listView1.Items.Add(string.Format("{0}{1}{2}{3}{4}{5}", r[0], r[1], r[2], r[3], r[4], r[5]));
}
r.Close();
}
catch (Exception err)
{
MessageBox.Show(err.Message, "查无此书");
}
}
} 展开
表内容
错误提示
代码如下:
private void button1_Click(object sender, EventArgs e)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand("select * from 图书信息 where 图书名="+textBox1 .Text ,conn );
listView1.Items.Clear();
try
{
conn.Open();
SqlDataReader r = cmd.ExecuteReader();
while (r.Read())
{
listView1.Items.Add(string.Format("{0}{1}{2}{3}{4}{5}", r[0], r[1], r[2], r[3], r[4], r[5]));
}
r.Close();
}
catch (Exception err)
{
MessageBox.Show(err.Message, "查无此书");
}
}
} 展开
4个回答
展开全部
看了一下,推断错误在字符串生成这里
SqlCommand cmd = new SqlCommand("select * from 图书信息 where 图书名="+textBox1 .Text ,conn );
原意是在图书信息这表里查询图书名这个字段,条件是由textBo1.Text来输入的,由于图书名这个字段类型是Text,字符串的比较查询要加'查询的内容'(单引号),所以改为
SqlCommand cmd = new SqlCommand("select * from 图书信息 where 图书名='" + textBox1 .Text
+ "'" ,conn );
注意"'"是两个双引号中间是个单引号。
SqlCommand cmd = new SqlCommand("select * from 图书信息 where 图书名="+textBox1 .Text ,conn );
原意是在图书信息这表里查询图书名这个字段,条件是由textBo1.Text来输入的,由于图书名这个字段类型是Text,字符串的比较查询要加'查询的内容'(单引号),所以改为
SqlCommand cmd = new SqlCommand("select * from 图书信息 where 图书名='" + textBox1 .Text
+ "'" ,conn );
注意"'"是两个双引号中间是个单引号。
追答
出现这种类型不兼容,其实是你的SQL字符串问题,因为你使用的类型是Text,这个类型现在已经很少用了,这个类型不能用字符串的比较运算符来操作,就是常用的=;<>不能用于Text类型。
解决方法之一:
把Text换成Varchar,Varchar(max)可以完全代替Text。这样你可以不用改字符串!
解决方法之二:
如果你非要用Text类型,可以改一下查询字符串,使用Convert()或者Cast()将Text临时转成Varchar,写法有很多这只试给出一种:
SqlCommand cmd = new SqlCommand("select * from 图书信息 where Convert(Varchar, 图书名) = '" + textBox1 .Text + "'" ,conn );
展开全部
有两种方式来排除错误:
一种是先不要where 条件,然后直接加条件,最后组合形成条件,这样一步一步来排除错误;
另一种是用F11跟踪,找到错误点修正,这是正规路子,但是要是不熟悉的话不如第一种方式来的快。
一种是先不要where 条件,然后直接加条件,最后组合形成条件,这样一步一步来排除错误;
另一种是用F11跟踪,找到错误点修正,这是正规路子,但是要是不熟悉的话不如第一种方式来的快。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SqlCommand cmd = new SqlCommand("select * from 图书信息 where 图书名="+textBox1 .Text ,conn );
是这个查询语句写错了~ 应该是
SqlCommand cmd = new SqlCommand("select * from 图书信息 where 图书名='" + textBox1 .Text
+ "'" ,conn );
这是字符串拼接错误.我想好心提醒下你.这样会有一个注入式漏洞.只要.满足这个条件都会,进入/
纯手打..希望采纳!
是这个查询语句写错了~ 应该是
SqlCommand cmd = new SqlCommand("select * from 图书信息 where 图书名='" + textBox1 .Text
+ "'" ,conn );
这是字符串拼接错误.我想好心提醒下你.这样会有一个注入式漏洞.只要.满足这个条件都会,进入/
纯手打..希望采纳!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询