“System.Data.SqlClient.SqlException”类型的未经处理的异常在 System.Data.dll 中发生

其他信息:在将varchar值'G101'转换成数据类型int时失败。usingSystem;usingSystem.Collections.Generic;usingS... 其他信息: 在将 varchar 值 'G101' 转换成数据类型 int 时失败。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace drom
{
public partial class FrDromquery : Form
{
public FrDromquery()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
dromquery.DataSource = DBHelper.query(string.Format(@"select dname 宿舍名字,dnaem 宿舍类型,dsum 实住人数,rno 应住人数,dromid 楼号,dstate 是否可用
from dromitory where dname='{0}' or dnaem='{0}' or dsum='{0}' or rno='{0}' or dromid='{0}' and dstate = '1'", querytext.Text));
}
}
}
展开
 我来答
micro0369
2016-11-30 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:3949万
展开全部
会不会是你输入的参数querytext.Text的值包含字母

而你这些判断的字段有数字类型
dsum='{0}' or rno='{0}' or dromid='{0}'
这3个我怀疑有字段类型的

在字段类型比较时,要把你输入的参数转换成数字进行比较,又因为你输入的参数值有字母,所以出现转换失败?

你把where改成(字符类型不需要cast):
where (dname='{0}' or dnaem='{0}' or cast(dsum as varchar(20))='{0}' or cast(rno as varchar(20))='{0}' or cast(dromid as as varchar(20))='{0}') and dstate = '1'
追问
可以了,谢谢!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
您可能需要的服务
百度律临官方认证律师咨询
平均3分钟响应 | 问题解决率99% | 24小时在线
立即免费咨询律师
11490人正在获得一对一解答
苏州天空之城3分钟前提交了问题
呼和浩特草原之歌3分钟前提交了问题
武汉草原风1分钟前提交了问题
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消
还有疑问? 马上咨询32038位在线律师,3分钟快速解答
立即免费咨询律师

辅 助

模 式