标题:求助: 未处理SqlException 列名'ph'无效
只看楼主
云の翼
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2012-6-25
结帖率:87.5%
已结贴  问题点数:10 回复次数:8 
求助: 未处理SqlException 列名'ph'无效
private void tsbtnLocal_Click(object sender, EventArgs e)
        {
            string ph = tstxtTel.Text.Trim();//要查询的号码
            ph = ph.Substring(0, 7);//取要查询的号码的前七位
            string sql = "select txtLocaltion,txtType,txtCityNum "+" from PhoneNum where 'phoneNum'='ph'";
            SqlConnection con = new SqlConnection("Server=MPLABPTVLFETWL2\\SQLEXPRESS;User Id=sa;Pwd=xu;DataBase=data");
            con.Open();
            MessageBox.Show("数据库已经打开");
            SqlCommand cmd = new SqlCommand(sql, con);//实例化SqlCommand对象
            SqlDataReader dr = cmd.ExecuteReader();//将数据提取到缓存中
           
                    if (dr.HasRows)//如果存在此记录
                    {
                        while (dr.Read())
                        {
                           
                            if ( ph==phoneNum)
                            {
                                txtLocaltion.Text = dr.GetValue(1).ToString();//显示归属地,1表示取第一个字符,下同
                                txtType.Text = dr.GetValue(2).ToString();//显示手机卡类型
                                txtCityNum.Text = dr.GetValue(3).ToString();//显示区号
                            }
                        }
                    }
                    else....................................

本人刚学C#,各种错误啊。。。。。。。。。。
搜索更多相关主题的帖子: private where 
2013-05-24 03:17
云の翼
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2012-6-25
得分:0 
string sql = "select txtLocaltion,txtType,txtCityNum "+" from PhoneNum where 'phoneNum'='ph'";应该没错吧,'phoneNum'='ph'的单引号没有也一样我想。问题应该在ph到底怎么了。
2013-05-24 03:20
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
得分:5 
select 字段名1,字段名2,字段名3 from 表名 where 字段名 = 值
txtLocaltion,txtType,txtCityNum看样子不像是列名
from PhoneNum,PhoneNum也不像是表名
值如果是变量,不能直接加引号,加引号就相当于字符串,而不是取变量的值,所以where PhoneNum = '" + ph + "'"

string sql = "select 字段名1,字段名2,字段名3 from 表名 where 字段名 = '" + ph + "'";
2013-05-24 04:18
qq645485165
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:197
注 册:2013-3-16
得分:0 
'phoneNum'='ph' 很明显是"select txtLocaltion,txtType,txtCityNum from PhoneNumwhere phone="+ph;
2013-05-24 08:43
云の翼
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2012-6-25
得分:0 
回复 3楼 yhlvht
谢谢 版主,根据您的讲解,我改正了,错误果然消失了。程序可以运行了,应该没有语法错误了,可是得到的结果就不正常了==为什么结果显示成"数据库已经打开",然后显示的就是“暂时未找到此号码的记录!我的数据库中存了20万手机归属地号码,比如我找到了1370102是属于北京号码,我输入量13701023456就显示成暂时未找到此号码的记录!我data数据库里已经建立了表data,data表里存了20万手机号归属地,字段名分别是id ,haoma ,quhao,diqu,leixing.现在代码如下(代码不长,您应该很快就看出我要做什么和每句的意图)先谢谢斑竹了!
                    private void tsbtnLocal_Click(object sender, EventArgs e)
        {
            string ph = tstxtTel.Text.Trim();//要查询的号码
            ph = ph.Substring(0, 7);//取要查询的号码的前七位
            string sql = "select diqu,leixing,quhao "+" from PhoneNum where haoma='"+ph+"'";
            SqlConnection con = new SqlConnection("Server=MPLABPTVLFETWL2\\SQLEXPRESS;User Id=sa;Pwd=xu;DataBase=data");
            con.Open();
            MessageBox.Show("数据库已经打开");
            SqlCommand cmd = new SqlCommand(sql, con);//实例化SqlCommand对象
            SqlDataReader dr = cmd.ExecuteReader();//将数据提取到缓存中
                    if (dr.HasRows)//如果存在此记录
                    {
                        while (dr.Read())
                        {
                                txtLocaltion.Text = dr.GetValue(1).ToString();//显示归属地,1表示取第一个字符,下同
                                txtType.Text = dr.GetValue(2).ToString();//显示手机卡类型
                                txtCityNum.Text = dr.GetValue(3).ToString();//显示区号
                        }
                    }
                    else
                    {
                        MessageBox.Show("暂时未查找到此号码的记录!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    dr.Close();
                    dr.Dispose();
                    con.Close();
                    con.Dispose();
                    tstxtTel.Focus();
            }
2013-05-24 14:11
云の翼
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2012-6-25
得分:0 
回复 3楼 yhlvht
更正一下,数据库名是data. 表名是PhoneNum
2013-05-24 14:13
云の翼
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2012-6-25
得分:0 
回复 3楼 yhlvht
难道是数据库里的表有问题吗。 表大致是这个样子的。
             id         haoma       quhao         diqu        leixing

            "100450"  "1390876"      "021"       "上海"      "神州行移动卡"
            ......................(后面的都这种格式,省略)................
2013-05-24 14:20
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
得分:5 
可能是你数据库里面的值带有引号的原因
就以你7楼那行数据来说
这个查询语句"select diqu,leixing,quhao from PhoneNum where haoma='"+ph+"'";
如果ph的值为1390876
那么这个语句就是 select diqu,leixing,quhao from PhoneNum where haoma = '1390876';
但是实际上应该是 select diqu,leixing,quhao from PhoneNum where haoma = '"1390876"'; 这样子才查得出来
这样的话,你有两种处理方式
1是模糊查询 "select diqu,leixing,quhao from PhoneNum where haoma like '%"+ph+"%'"; 等号换成like,%表示任意字符
2是 "select diqu,leixing,quhao from PhoneNum where haoma='\""+ph+"\"'"; 就是把引号作为值,但是要转义,这样应该可以查出来
2013-05-24 15:50
云の翼
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2012-6-25
得分:0 
回复 8楼 yhlvht
谢谢斑竹!果然是这个问题,被您轻松解决了!哈哈。以后有问题还望您多指教啊。编程论坛还是不错的,估计里面牛人也挺多的。衷心祝您学习工作顺利,身体健康,生活愉快!
2013-05-25 21:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-407893-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.675577 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved