try
{

string StrSQL="UPDATE 信息表 SET('";
StrSQL+="',姓名='" + this.textBox1.Text;
StrSQL+="', 性别='" + this.textBox2.Text;
StrSQL+="', 籍贯='" + this.textBox3.Text;
StrSQL+="', 身份证号='" + this.textBox4.Text;
StrSQL+="', 出生日期='" + this.textBox5.Text;
StrSQL+="', 家庭地址='" + this.textBox6.Text;
StrSQL+="', 学号='" + this.textBox7.Text +"' WHERE  姓名='" + this.textBox1.Text+"')";
this.oleDbCommand1.CommandText=StrSQL;
this.oleDbCommand1.Connection=this.oleDbConnection1;
//打开数据库连接
this.oleDbConnection1.Open();
//执行SQL命令
this.oleDbCommand1.ExecuteNonQuery();
//关闭连接
this.oleDbConnection1.Close();
//更新数据集
this.dataSet1.Tables["信息表"].Rows[this.myBind.Position].BeginEdit();
this.dataSet1.Tables["信息表"].Rows[this.myBind.Position].EndEdit();
this.dataSet1.AcceptChanges();
this.oleDbDataAdapter1.Fill(this.dataSet1,"信息表");
MessageBox.Show("修改数据集记录操作成功!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
catch(Exception Err)
{
MessageBox.Show("修改数据集记录操作失败:"+Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
//如果打开了连接,则关闭它
if(this.oleDbConnection1.State==ConnectionState.Open)
{
this.oleDbConnection1.Close();
}
} 在做更新数据库的时候,老是提示说:“未将对象引用设置到对象的实例”,不知道哪里出现问题了,请各位帮帮忙看一下下,先谢过了!

解决方案 »

  1.   

    this.oleDbCommand1 = new OleDbCommand();了吗?另外就是为了性能考虑,一般推荐使用OleDb时不要检测this.oleDbConnection1.State的状态。
    你在finally块里conn.Close()就可以了(或者conn.Dispose(),Dispose()会在后台自动调用Close())。
      

  2.   

    问题出在这里:
    this.oleDbDataAdapter1.Fill(this.dataSet1,"信息表");
    因为DataAdapter需要一个活动的连接,而你在之前已经把连接给关闭了。
      

  3.   

    to:xrwang(无涯)
    DataAdapter在Fill和Update时会自动打开connection或关闭。
    如果仅仅使用DataAdapter(不用DataReader或ExecuteNonQuery等),你的代码中根本就应该看不到Conn.Open(), Conn.Close()等。
      

  4.   

    首先,你拼接的sql有问题,应该如下:
    string StrSQL="UPDATE 信息表 SET(";
    StrSQL+="姓名='" + this.textBox1.Text;
    StrSQL+="', 性别='" + this.textBox2.Text;
    StrSQL+="', 籍贯='" + this.textBox3.Text;
    StrSQL+="', 身份证号='" + this.textBox4.Text;
    StrSQL+="', 出生日期='" + this.textBox5.Text;
    StrSQL+="', 家庭地址='" + this.textBox6.Text;
    StrSQL+="', 学号='" + this.textBox7.Text +"' WHERE 姓名='" + this.textBox1.Text+"')";其次,再使用ado.net来操作数据库的时候,需要检查每个ado.net对象是否创建。一个建议,不要用拼接字符串,用参数来代替要使sql语句简洁多了,也方便查错,参看
    http://blog.csdn.net/knight94/archive/2006/04/15/664530.aspx
      

  5.   

    未将对象引用设置到对象的实例。
    加断点一步一步调试,找到为null的对象
      

  6.   

    调试出来后是这两个没有值this.dataSet1.Tables["信息表"].Rows[this.myBind.Position].BeginEdit();
    this.dataSet1.Tables["信息表"].Rows[this.myBind.Position].EndEdit();
    但是还是搞不清楚,SQL语句现在是没错了,晕死了~
    各位帮帮忙,谢谢