Order类的声明:
=======================
public class OrderClass
{
         public string Order;
public string Categoty;
public DateTime Date;
public DateTime Term;
}方法的调用过程:
=============================
private void btnNext_Click(object sender, System.EventArgs e)
{
OrderClass newOrder = new OrderClass();
newOrder.Order = TextBox1.Text;
newOrder.Categoty = DropDownList1.SelectedValue.ToString();
newOrder.Date = Convert.ToDateTime(TextBox2.Text);
newOrder.Term = Convert.ToDateTime(TextBox3.Text);
DataClass dc = new DataClass();
dc.AddOrder(newOrder);
}

解决方案 »

  1.   

    GetSelectData方法是这样的,
    =============================
    我真的烦死了,还是找不到问题在哪里。请各位帮我看看吧!public DataSet GetSelectData(string SelectText)
    {
    Adapter = new SqlDataAdapter(SelectText,Conn);
    try
    {
    Conn.Open();
    Adapter.Fill(ds);
    return ds;//返回数据表;
    }
    catch //保证即使数据库读取失败都能返回DS数据集;
    {
    return ds;
    }
    finally//最后关闭数据库连接;
    {
    Conn.Close();
    }
    }
      

  2.   

    系统老是提示:
      System.NullReferenceException: 未将对象引用设置到对象的实例。 at Logistics.DataClass.AddOrder(OrderClass newOrder) in 那么怎样才能够实现用自定义的类作为参数传递呢?
    我这样做有问题吗?
      

  3.   

    System.NullReferenceException: 未将对象引用设置到对象的实例。 at Logistics.DataClass.AddOrder(OrderClass newOrder) in DataClass dc = new DataClass();
    你应该检查DataClass 这个类啊!
      

  4.   

    GetSelectData()中的ds是在哪里初始化的???
      

  5.   

    public void AddOrder(OrderClass newOrder)
    {
    //提交数据;
    //Conn.Open();
             Adapter = new SqlDataAdapter();
    Adapter.SelectCommand.CommandText = "Select * From Order";
    Adapter.SelectCommand.Connection =Conn;
    SqlCommandBuilder cb = new SqlCommandBuilder(Adapter);
    Conn.Open();
    ds = this.GetSelectData("Select * From Order");
    DataRow dr = ds.Tables["Order"].NewRow();
    dr["Order"] = newOrder.Order;
    dr["Category"] = newOrder.Categoty;
    dr["Date"] = newOrder.Date;
    dr["Term"] = newOrder.Term;
    ds.Tables["Order"].Rows.Add(dr);
    Adapter.Update(ds,"Order");
    }
      

  6.   

    Adapter = new SqlDataAdapter(); Adapter 没有初始化!
      

  7.   

    TO: xinyulou(心雨楼); Tony8002003(冷) ;
    Adaptert和ds 的声明和初始化都在构造函数中完成的
      

  8.   

    string SelectText="...";
    SqlConnection Conn=new sqlConnection();
    SqlDataAdapter Adapter = new SqlDataAdapter(SelectText,Conn);
    DataSet ds=new DataSet();
    try
    {

    Adapter.Fill(ds);
    return ds;//返回数据表;
    }
    catch //保证即使数据库读取失败都能返回DS数据集;
    {
    return ds;
    }
      

  9.   

    Conn也在里面声明了public类型的变量;
      

  10.   

    Tiger,你执行到哪一步的时候出错了?
      

  11.   

    看了楼主的三个代码,ds是不是在构造函数中实例化的。如果不是那上面的代码中没有看到ds分配内存,楼主可以检查一下。
    另外这种错误就像楼上的所说的单步调试一下,因为你是空引用问题比较容易找,有问题发短信给我。
      

  12.   

    系统提示的是:
    Logistics.DataClass.AddOrder(OrderClass newOrder) in 58行。
    但是我不知道等于那一行,他的代码编辑器中不像Delphi8那样带标识 啊。
      

  13.   

    是啊,我的ds变量是在构造函数中初始化的啊。  麻烦你了。
    我以前用C#写App应用程序时都没问题,珍奇怪。
      

  14.   

    show all you codes !
      

  15.   

    系统提示的是:
    Logistics.DataClass.AddOrder(OrderClass newOrder) in 58行。
    但是我不知道等于那一行,他的代码编辑器中不像Delphi8那样带标识 啊。状态栏右下显示的是光标所在的行列,也可以在工具-->选项里面设置显示行
      

  16.   

    看了你的代码以后,我的感觉是这样的,
    你是这样定义的:
    DataClass dc = new DataClass();
    dc.AddOrder(newOrder);
    而实际上的方法定义是这样的:
    public void AddOrder(OrderClass newOrder);这只是个提交数据到数据库的壳(也就是方法)
    具体的连接web页面实现本质数据传输还是由最上面两句完成的。
    那么关键点集中在DataClass这个类,这个类定义的dc到底是个什么样的类对象,它是否真的能存数据,从而完成AddOrder(),这是你要着重考虑的问题。如果dc只是个实例化方法的话,显然会出错,因为没有数据的承载,那么谈何完成提交到数据库的AddOrder()这个方法呢?
      

  17.   

    巨简单
    :
    加一个判断语句:
    if (ds.tables["Order"]!=null)
    {
      do...
    }
      

  18.   

    我就是要将自定义的类OrderClass来存储数据然后作为参数
    传递到DataClass的AddOrder(OrderClass newOrder);的方法中。
    这样是不是有问题?
    是不是WebForm中不可以将数据这样传递?按照楼上的师傅所说的意思是说我的
      
      OrderClass newOrder = new OrderClass();
      newOrder.Order = TextBox1.Text;
      newOrder.Categoty = DropDownList1.SelectedValue.ToString();
      newOrder.Date = Convert.ToDateTime(TextBox2.Text);
      newOrder.Term = Convert.ToDateTime(TextBox3.Text);
      DataClass dc = new DataClass();
      dc.AddOrder(newOrder);
    实际上AddOrder方法所接受到的参数是null[空值]????
      

  19.   

    跟踪一下吧,看看是那个值没有初始化
    DataClass应该是这个
      

  20.   

    跟踪一下吧,看看是那个值没有初始化
    DataClass应该是这个
      

  21.   

    未将对象引用设置到对象的实例
    肯定是你的哪一个对象是空的,特别注意一下string型数据
    自己慢慢找找
      

  22.   

    经过我的调试发现是在DataSet ds = new DataSet();
    ds = GetSelectData("Select * From Order");
    的过程中,没有返回数据集。
    就是不知道是什么原因?
    现在我已经将该方法改为这样,还是不行。public DataSet GetSelectData(string SelectText)
    {
             Conn = new SqlConnection(ConnText);
    Adapter = new SqlDataAdapter(SelectText,Conn);
    try
    {
    Conn.Open();
    Adapter.Fill(ds);
    return ds;//返回数据表;
    }
    catch //保证即使数据库读取失败都能返回DS数据集;
    {
    return ds;
    }
    finally//最后关闭数据库连接;
    {
    Conn.Close();
    }
    }
      

  23.   

    我怀疑这个。不知道是否对?
    //newOrder.Categoty = DropDownList1.SelectedValue.ToString();
    改成这样试试
    if(DropDownList1.SelectedValue!=null)
    {
    newOrder.Categoty = DropDownList1.SelectedValue.ToString();
    }
      

  24.   

    收到信了,给楼主修改了一下DataClass类;
    using System;
    using System.Data;
    using System.Data.SqlClient;namespace Logistics
    { /// <summary>
    /// 自定义Orderclass类,处理订单数据;
    /// </summary>
    public class OrderClass
    {
    public string Order;
    public string Categoty;
    public DateTime Date;
    public DateTime Term;
    }
    /// <summary>
    /// 添加DataClass数据管理专用类用以处理后台数据库。
    /// </summary>
    public class DataClass
    {
    private SqlConnection Conn;
    //private SqlCommandBuilder Commb;
    //private DataSet ds;//这里的DataSet用的不好
    private SqlDataAdapter Adapter;
    private string ConnText = "Server=localhost;Uid=sa;Pwd=;DataBase=Logistics";
    public DataClass()
    {
    Conn = new SqlConnection(ConnText);
    //Commb= new SqlCommandBuilder();
    //ds = new DataSet();
    Adapter = new SqlDataAdapter();
    }
    //手工添加根据SQL语句参数,提供相应数据的方法;
    public DataSet GetSelectData(string SelectText)
    {
    //既然已经在构造函数中实例化了为什么还在这里重新实例化一个
    //Adapter = new SqlDataAdapter(SelectText,Conn);
    //修改
    Adapter.SelectCommand.Connection = Conn;
    Adapter.SelectCommand.CommandText = SelectText;
    try
    { DataSet ds =new DataSet();
    //既然只填充一次就让Adapter自己管理连接吧,Adapter会自己管理连接
    //Conn.Open();
    Adapter.Fill(ds,"Order");
    return ds;//返回数据表;
    }
    catch //保证即使数据库读取失败都能返回DS数据集;
    {
    return null;
    }
    //finally//最后关闭数据库连接;
    //{
    // Conn.Close();
    //}
    }
    public void AddOrder(OrderClass Order)
    {
    //提交数据;
    Adapter.SelectCommand.CommandText = "Select * From Order";
    Adapter.SelectCommand.Connection =Conn;
    SqlCommandBuilder cb = new SqlCommandBuilder(Adapter);
    //Conn.Open(); DataSet ds = this.GetSelectData("Select * From Order");
    //ds = new DataSet();
    //Adapter.Fill(ds);
    DataRow dr = ds.Tables["Order"].NewRow();
    dr["Order"] = Order.Order;
    dr["Category"] = Order.Categoty;
    dr["Date"] = Order.Date;
    dr["Term"] = Order.Term;
    ds.Tables["Order"].Rows.Add(dr); Adapter.Update(ds,"Order");
    }
    }
    }
      

  25.   

    谢谢楼上的师傅,你的回信小弟受到了。
    但是我想将GetSelectData方法该的通用一点。
    后来我将他该为这样:但是没有正常返回指定数据表名字的
    数据集,麻烦你好人作到底帮小弟看看为什么回不行吗?public DataSet GetSelectData(string SelectText,string TableName)
    {
             //我添加了这个TableName变量后就不行不知道为什么?,
    Adapter.SelectCommand.Connection = Conn;
    Adapter.SelectCommand.CommandText = SelectText;
    try
    { DataSet ds =new DataSet();
    Adapter.Fill(ds,TableName);
    return ds;//返回数据表;
    }
    catch //保证即使数据库读取失败都能返回DS数据集;
    {
    return null;
    }
    }调用时,我是这样调用的:
    =======================
    DataSet ds = new DataSet();
    ds = GetSelectData("Select * From Order","Order");
    //接下来如果要访问这个ds变量时就会提示“未将对象引用设置到对象实例”
      

  26.   

    应该是数据访问的原因,把
    catch //保证即使数据库读取失败都能返回DS数据集;
           {
                  return null;
           }
    =========================写成
    catch(Exception ex)
    {
         ex.ToString();//在这里设置断点,看看错误提示是什么,从你的说明来看是有异常了,
         return null;
    }
    =======================
    DataSet ds = new DataSet();
    ds = GetSelectData("Select * From Order","Order");
    修改成
    //不需要再重新实例化ds 了。
    DataSet ds = GetSelectData("Select * From Order","Order");
    if(ds == null)
    那就是获取出错。