ASP.NET中的列名无效
using System;using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class ck_score7 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void ck_Click(object sender, EventArgs e)
{
string xh = xuehao.Text.ToString();
string xqi = xq.Text.ToString();
string xni = xn.Text.ToString();
string kmu = km.Text.ToString();
SqlConnection conn = new SqlConnection("server=localhost;database=gydianzi;uid=sa;pwd=123");
conn.Open();
SqlCommand comm = new SqlCommand("select * from scorelist where s_name=xh and s_year=xni and s_term=xqi and s_sort=kmu", conn);
SqlDataReader dr = comm.ExecuteReader();
dr.Read();
xm.Text = dr["s_truename"].ToString();
yjzz.Text = dr["s_score1"].ToString();
cxsj.Text = dr["s_score2"].ToString();
ys.Text = dr["s_score3"].ToString();
zp.Text = dr["s_allscore"].ToString();
xf.Text = dr["s_credithour"].ToString();
}
}
问题:
“/CheckScore”应用程序中的服务器错误。
--------------------------------------------------------------------------------
列名 'xh' 无效。
列名 'xni' 无效。
列名 'xqi' 无效。
列名 'kmu' 无效。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: 列名 'xh' 无效。
列名 'xni' 无效。
列名 'xqi' 无效。
列名 'kmu' 无效。
源错误:
行 26: conn.Open();
行 27: SqlCommand comm = new SqlCommand("select * from scorelist where s_name=xh and s_year=xni and s_term=xqi and s_sort=kmu", conn);
行 28: SqlDataReader dr = comm.ExecuteReader();
行 29: dr.Read();
行 30: xm.Text = dr["s_truename"].ToString();
源文件: f:\Firstproject\CheckScore\ck_score2.aspx.cs 行: 28
--------------------编程问答--------------------
while(dr.Read())--------------------编程问答-------------------- 列名 'xh' 无效。
{
...code
}
列名 'xni' 无效。
列名 'xqi' 无效。
列名 'kmu' 无效。
数据库中有xh、xni、kmu列名么? --------------------编程问答-------------------- 说明绑到控件上的列名,和你的数据关联不对,有可能是数据库的名字,当然,也有可能是你的集合的名字,具体看你的数据处理方式了 --------------------编程问答-------------------- 这些都是参数啊要s_name='"+xh+"' and s_year='"+xni+"' and s_term='"+xqi+"' and s_sort='"+kmu+"'"
这么写,如果数据库字段是数字的就不要单引号 --------------------编程问答--------------------
--------------------编程问答-------------------- 这个很糟糕,LZ是否看下书上简单的例子,可能毛病有时就是LZ你的一点点小疏忽 --------------------编程问答-------------------- 什么列名啊,根本就是sql语句写得有问题啊 --------------------编程问答-------------------- SqlCommand comm = new SqlCommand("select * from scorelist where s_name=xh and s_year=xni and s_term=xqi and s_sort=kmu", conn); 这里不对,建议使用参数 --------------------编程问答-------------------- SQL写的有问题
SqlCommand comm = new SqlCommand("select * from scorelist where s_name='xh' and s_year='xni' and s_term='xqi' and s_sort='kmu'", conn
--------------------编程问答-------------------- SqlCommand comm = new SqlCommand("select * from scorelist where s_name=xh and s_year=xni and s_term=xqi and s_sort=kmu", conn);
select * from xxx where xxx='xxx'
SQL写的有问题。非INT型的列在sql中传值的时候要加 ' 号。
不然就不会被识别为字段值,而被误认为是字段名(即列)勒。
--------------------编程问答--------------------
SqlCommand comm = new SqlCommand("select * from scorelist where s_name='"+xh+"' and s_year='"+xni+"' and s_term='"+xqi+"' and s_sort='"+kmu+"'", conn);--------------------编程问答--------------------
up,加上隐号 --------------------编程问答-------------------- SqlCommand comm = new SqlCommand("select * from scorelist where s_name='"+xh+"' and s_year='"+xni+"' and s_term='"+xqi+"' and s_sort='"+kmu+"'", conn);
当然如果是数字字段就取消单引号 --------------------编程问答-------------------- 你跟踪调试一下就知道了! --------------------编程问答-------------------- select * from scorelist where s_name="+ xh +" and s_year= " + xni +" and s_term=' " + xqi +" 'and s_sort="+ kmu +" --------------------编程问答-------------------- 建议楼主使用SqlParameter,在数据库中进行拼装SQL 语句。这样能减少错误
--------------------编程问答-------------------- ("select * from scorelist where s_name='"+xh+"' and s_year=’“+xni+”‘ and s_term='"+xqi+"' and s_sort='"+kmu+", conn);
应该可以了 --------------------编程问答--------------------
补充:.NET技术 , ASP.NET