注册 登录
编程论坛 ASP.NET技术论坛

未将对象引用设置到对象的实例。

水晶心 发布于 2010-08-25 17:10, 2161 次点击
public void bindgrid()
    {
        string str = ConfigurationSettings.AppSettings["dsn"];
        SqlConnection cn = new SqlConnection(str);
        cn.Open();
        string order="select kid,Uid,uid,Uname,kqdate,dgdate,cq,sj,bj,gj,kg,hj,sj1,gxj,tqj,pc,cc,dx where Uid=uid ";
        if (DropDownList4.SelectedItem.Value.ToString()!="-1")
        {
            order = order + "and udep=" + DropDownList4.SelectedItem.Value.ToString();
        }
        String date = DropDownList1.SelectedItem.Value.ToString() + "-" + DropDownList2.SelectedItem.Value.ToString() + "-" + DropDownList3.SelectedItem.Value.ToString();

        order=order +"and"+date ;
        SqlDataAdapter da=new SqlDataAdapter(order ,cn);
        DataSet  ds=new DataSet ();
        da.Fill(ds);
        GridView1.DataSource=ds;
        GridView1.DataBind ();
        cn.Close();
    }


未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 60:             order = order + "and udep=" + DropDownList4.SelectedItem.Value.ToString();
行 61:         }
行 62:         String date = DropDownList1.SelectedItem.Value.ToString() + "-" + DropDownList2.SelectedItem.Value.ToString() + "-" + DropDownList3.SelectedItem.Value.ToString();
行 63:
行 64:         order=order +"and"+date ;
 62行报错。
高手们给看看啊

30 回复
#2
Mark_hong2010-08-25 17:16
估计DropDownList2.SelectedItem或者DropDownList2.SelectedItem本身是null,所以会报空引用的错误,你自己调试下,应该不难的
#3
水晶心2010-08-25 17:24
  String date = DropDownList1.SelectedItem.Value.ToString() + "-" + DropDownList2.SelectedItem.Value.ToString() + "-" + DropDownList3.SelectedItem.Value.ToString();

这句是读取记录的,我想是不是 string order="select kid,Uid,uid,Uname,kqdate,dgdate,cq,sj,bj,gj,kg,hj,sj1,gxj,tqj,pc,cc,dx from kqoqin,dep where Uid=uid ";这句写的有问题啊
#4
冰镇柠檬汁儿2010-08-25 17:35
DropDownList1、DropDownList2、DropDownList3你都是怎么绑定数据的?不会就用这么一个sql绑定吧?
#5
冰镇柠檬汁儿2010-08-25 17:36
再说好像DropDownList有SelectValue这样的项可以用吧,呵呵
#6
qingshuiliu2010-08-25 21:54
String date = DropDownList1.SelectedItem.Value.ToString() + "-" + DropDownList2.SelectedItem.Value.ToString() + "-" + DropDownList3.SelectedItem.Value.ToString();
这句中的DropDownList1.SelectedItem.Value应该都换成DropDownList1.SelectedValue.ToString(),
你跟踪的话,注意要看具体是那个为空的。
#7
水晶心2010-08-26 14:41
谢谢大家,我先改一下试试
#8
tony_wen2010-08-26 15:31
order=order +"and"+date ;
 SqlDataAdapter da=new SqlDataAdapter(order ,cn);
你自己看看and后面有空格吗?这样的sql语句肯定有问题,而且你最终得到有Order=="select kid,Uid,uid,Uname,kqdate,dgdate,cq,sj,bj,gj,kg,hj,sj1,gxj,tqj,pc,cc,dx where Uid=uid and" +DropDownList1.SelectedItem.Value.ToString() + "-" + DropDownList2.SelectedItem.Value.ToString() + "-" + DropDownList3.SelectedItem.Value.ToString();
后面红色的这些是什么意思,你根本就没有写和哪个作比较进行过虑.....
还有一个问题就是不知道你的sql server 是2005还是2008的
2008的才可以这样写的==>
select kid,Uid,uid,Uname,kqdate,dgdate,cq,sj,bj,gj,kg,hj,sj1,gxj,tqj,pc,cc,dx from kqoqin,dep
2005的应该不支持
#9
tony_wen2010-08-26 15:38
而且还有就是如果udep这个字段是字符型的话是不是等于号后面的值要加'......'号呢?
例如:order = order + "and udep='" + DropDownList4.SelectedItem.Value.ToString() +"'";
      
#10
水晶心2010-08-26 16:14
public void bindgrid()
    {
        string str = ConfigurationSettings.AppSettings["dsn"];
        SqlConnection cn = new SqlConnection(str);
        cn.Open();
        string order="select kid,Uid,uid,did,Uname,kqdate,dgdate,cq,sj,bj,gj,kg,hj,sj1,gxj,tqj,pc,cc,dx from kqoqin,dep,user1 where Uid=uid ";
        if (DropDownList4.SelectedValue.ToString()!="-1")
        {
            order = order + "and udep=" + DropDownList4.SelectedValue.ToString();
        }
        String date = DropDownList1.SelectedValue.ToString();

        order=order +"and"+date ;
        SqlDataAdapter da=new SqlDataAdapter(order ,cn);
        DataSet  ds=new DataSet ();
        da.Fill(ds);
        GridView1.DataSource=ds;
        GridView1.DataBind ();
        cn.Close();
    }
报错 and附近 有语法错误
#11
水晶心2010-08-26 16:17
如果Uid和uid都是varchar型的是不是不对啊
#12
水晶心2010-08-26 16:48
我的vs2005
#13
tony_wen2010-08-26 17:29
我不是都帮你解答了吗?order=order +"and"+date ;和udep=" + DropDownList4.SelectedValue.ToString();有问题
1.and 后面要有空格
2.udep是字符类型的话=后面要有'
3.date 没有比较对象
  
#14
tony_wen2010-08-26 17:32
回复 12楼 水晶心
vs2005没关系,只要你的数据库是2008就行
#15
tony_wen2010-08-26 17:33
回复 11楼 水晶心
可以为varchar类型,但你写sql语句的时候就要加Uid='XXXX';要有单引号的
#16
水晶心2010-08-26 17:36
第 1 行: '=' 附近有语法错误。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: 第 1 行: '=' 附近有语法错误。

源错误:


行 70:         SqlDataAdapter da=new SqlDataAdapter(order ,cn);
行 71:         DataSet  ds=new DataSet ();
行 72:         da.Fill(ds);
行 73:         GridView1.DataSource=ds;
行 74:         GridView1.DataBind ();
怎么回事啊,帮帮忙啊
 
#17
水晶心2010-08-26 17:39
我的数据库是sql2000
#18
水晶心2010-08-26 17:41
我都按照你们说的改了,还是不行啊
#19
tony_wen2010-08-26 17:43
你真是,按照我的方法改了没有?还这样写肯定错==》order=order +"and"+date ,你date是要做什么用?过虑吗?还是?要不就不写,要不就date='XXX';
#20
水晶心2010-08-26 17:47
  order = order + "and kqdate=" + date;
#21
水晶心2010-08-26 17:48
我改了
#22
水晶心2010-08-26 18:26
好像还是select语句有问题
#23
冰镇柠檬汁儿2010-08-27 09:23
select kid,Uid,uid,did,Uname,kqdate,dgdate,cq,sj,bj,gj,kg,hj,sj1,gxj,tqj,pc,cc,dx from kqoqin,dep,user1 where Uid=uid and udep=...
and这个地方是没错的,问题是and前面,你要查询kqoqin,dep,user1这三张表,Uid=uid这两个uid各自是哪个表的?你当然知道,但是电脑不知道,你让我这个外人看,我都不知道,你要清楚,sql是不区分大小写的,所以你的U大写也没用。还有你要查那么多字段,都是哪个表的?如果这些表之间没有重复的字段名称还好,要是有,也必须注明。
按照我的猜测,这个SQL应该写成这样:
select kid,kqoqin.Uid,dep.uid,did,Uname,kqdate,dgdate,cq,sj,bj,gj,kg,hj,sj1,gxj,tqj,pc,cc,dx from kqoqin,dep,user1 where kqoqin.Uid=dep.uid and ...
因为如果你的字段是按照表的顺序写的,那么两个uid应该分别是kqoqin,dep表的,如果不是,你再自己调整下,反正思路是这样。
#24
水晶心2010-08-27 10:54
知道了,我会改的,现在我用了快速监视发现DropDownList4.Items.Add(new ListItem(dr["dname"].ToString(),dr["did"].ToString()));
没有值,是我绑定的错误吗,能详细说明一下DropDownList4控件的绑定方法吗。
#25
冰镇柠檬汁儿2010-08-27 11:05
DropDownList4.DataSoure = datatable
我记得应该是这么绑定数据
#26
水晶心2010-08-27 11:05
楼上的,我按照你的方法改了select语句还是不对啊,我都不知道该怎么办了,
#27
水晶心2010-08-27 11:07
我在前台绑定的,可以吗
#28
水晶心2010-08-27 12:55
大哥大姐们,再帮我看看吧我快疯了。

public void bindgrid()
    {
        string str = ConfigurationSettings.AppSettings["dsn"];
        SqlConnection cn = new SqlConnection(str);
        cn.Open();
        string order = "Select kaoqin.kid,kaoqin.uid,kaoqin.uname,kaoqin.kqdate,kaoqin.dgdate,kaoqin.cq,kaoqin.sj,kaoqin.bj,kaoqin.gj,kaoqin.kg,kaoqin.hj,kaoqin.sj1,kaoqin.gxj,kaoqin.tqj,kaoqin.pc,kaoqin.cc,kaoqin.dx,user1.uid from kaoqin,user1 where kaoqin.uid=user1.Uid";
        if (DropDownList4.SelectedValue.ToString()!="-1")
        {
            order=order  + DropDownList4.SelectedValue.ToString();

        }
        String date = DropDownList1.SelectedValue.ToString();
        order = order + date;
        SqlDataAdapter da=new SqlDataAdapter(order ,cn);
        DataSet ds = new DataSet();
        da.Fill(ds);     
        GridView1.DataBind ();
        cn.Close();
    } protected void Button6_Click(object sender, EventArgs e)
    {
        bindgrid();
    }

}

第 1 行: '0' 附近有语法错误。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

#29
冰镇柠檬汁儿2010-08-27 17:16
string order = "Select kaoqin.kid,kaoqin.uid,kaoqin.uname,kaoqin.kqdate,kaoqin.dgdate,kaoqin.cq,kaoqin.sj,kaoqin.bj,kaoqin.gj,kaoqin.kg,kaoqin.hj,kaoqin.sj1,kaoqin.gxj,kaoqin.tqj,kaoqin.pc,kaoqin.cc,kaoqin.dx,user1.uid from kaoqin,user1 where kaoqin.uid=user1.Uid";
        if (DropDownList4.SelectedValue.ToString()!="-1")
        {
            order=order  + DropDownList4.SelectedValue.ToString();

        }
服了你了,把错的地方改对了,把没错的地方改错了,你原来的那个and udep=呢?
#30
冰镇柠檬汁儿2010-08-27 17:19
string str = ConfigurationSettings.AppSettings["dsn"];
        SqlConnection cn = new SqlConnection(str);
        cn.Open();
        string order = "Select kaoqin.kid,kaoqin.uid,kaoqin.uname,kaoqin.kqdate,kaoqin.dgdate,kaoqin.cq,kaoqin.sj,kaoqin.bj,kaoqin.gj,kaoqin.kg,kaoqin.hj,kaoqin.sj1,kaoqin.gxj,kaoqin.tqj,kaoqin.pc,kaoqin.cc,kaoqin.dx,user1.uid from kaoqin,user1 where kaoqin.uid=user1.Uid";
        if (DropDownList4.SelectedValue.ToString()!="-1")
        {
            order = order + " and udep=" + DropDownList4.SelectedValue.ToString();

        }
        String date = DropDownList1.SelectedValue.ToString();
        order = order + date;
        SqlDataAdapter da=new SqlDataAdapter(order ,cn);
        DataSet ds = new DataSet();
        da.Fill(ds);
        GridView1.DataSoure = ds.Tables[0];
        GridView1.DataBind();
        cn.Close();

注意我改过的地方,我真费解了,你的这些问题一个是很低级,另一个是以前在别的帖子中都回答过的问题你还错!
静下心,自己好好查查,别那么急躁
#31
qingshuiliu2010-08-28 07:30
看着我都累了
水晶你发给我,我直接给你调试好算了
xiongpersonal@
1