public OleDbDataAdapter da;
public OleDbConnection conn;
public DataSet ds;
public DataRow dr;
private void ShowData()
{
conn = new OleDbConnection("provider=Microsoft.Jet.OleDb.4.0;Data Source=student.mdb");
string sql = "select * from 第一学期";
da = new OleDbDataAdapter(sql, conn);
ds = new DataSet();
da.Fill(ds, "第一学期"); }private void f3_xg_Click(object sender, EventArgs e)
{
ShowData();
ds.Tables["第一学期"].PrimaryKey = new DataColumn[] { ds.Tables["第一学期"].Columns["学号"] };
dr = ds.Tables["第一学期"].Rows.Find(f3_num.Text); dr["姓名"] = f3_name.Text;
dr["学号"] = f3_num.Text;
dr["毛泽东思想邓小平理论"] = Convert.ToInt32(f3_kck_t1.Text);
dr["形势与政策"] = Convert.ToInt32(f3_kck_t2.Text);
dr["实用英语"] = Convert.ToInt32(f3_kck_t3.Text);
dr["计算机数学"] = Convert.ToInt32(f3_kck_t4.Text);
dr["劳动"] = Convert.ToInt32(f3_kck_t5.Text); dr["课程设计"] = Convert.ToInt32(f3_ksk_t1.Text);
dr["ACCESS数据库"] = Convert.ToInt32(f3_ksk_t2.Text);
dr["网页设计技术"] = Convert.ToInt32(f3_ksk_t3.Text);
dr["数据结构"] = Convert.ToInt32(f3_ksk_t4.Text);
dr["组成原理与汇编语言"] = Convert.ToInt32(f3_ksk_t5.Text); da.SelectCommand = new OleDbCommand("select * from 第一学期", conn);
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
//da.InsertCommand = cb.GetInsertCommand();
//da.DeleteCommand = cb.GetDeleteCommand();
da.UpdateCommand = cb.GetUpdateCommand();
//dr = ds.Tables["第一学期"].Rows[];
//da.Update(ds,"第一学期");
try
{
da.Update(ds, "第一学期");
ds.AcceptChanges();
MessageBox.Show("更新成功!");
}
catch (Exception ex)
{
MessageBox.Show("更新出错!错误原因为:\n" + ex.Message + "\n");
}
}
}
之后显示的错误是:对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。
希望高手能详细点明原因!
public OleDbConnection conn;
public DataSet ds;
public DataRow dr;
private void ShowData()
{
conn = new OleDbConnection("provider=Microsoft.Jet.OleDb.4.0;Data Source=student.mdb");
string sql = "select * from 第一学期";
da = new OleDbDataAdapter(sql, conn);
ds = new DataSet();
da.Fill(ds, "第一学期"); }private void f3_xg_Click(object sender, EventArgs e)
{
ShowData();
ds.Tables["第一学期"].PrimaryKey = new DataColumn[] { ds.Tables["第一学期"].Columns["学号"] };
dr = ds.Tables["第一学期"].Rows.Find(f3_num.Text); dr["姓名"] = f3_name.Text;
dr["学号"] = f3_num.Text;
dr["毛泽东思想邓小平理论"] = Convert.ToInt32(f3_kck_t1.Text);
dr["形势与政策"] = Convert.ToInt32(f3_kck_t2.Text);
dr["实用英语"] = Convert.ToInt32(f3_kck_t3.Text);
dr["计算机数学"] = Convert.ToInt32(f3_kck_t4.Text);
dr["劳动"] = Convert.ToInt32(f3_kck_t5.Text); dr["课程设计"] = Convert.ToInt32(f3_ksk_t1.Text);
dr["ACCESS数据库"] = Convert.ToInt32(f3_ksk_t2.Text);
dr["网页设计技术"] = Convert.ToInt32(f3_ksk_t3.Text);
dr["数据结构"] = Convert.ToInt32(f3_ksk_t4.Text);
dr["组成原理与汇编语言"] = Convert.ToInt32(f3_ksk_t5.Text); da.SelectCommand = new OleDbCommand("select * from 第一学期", conn);
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
//da.InsertCommand = cb.GetInsertCommand();
//da.DeleteCommand = cb.GetDeleteCommand();
da.UpdateCommand = cb.GetUpdateCommand();
//dr = ds.Tables["第一学期"].Rows[];
//da.Update(ds,"第一学期");
try
{
da.Update(ds, "第一学期");
ds.AcceptChanges();
MessageBox.Show("更新成功!");
}
catch (Exception ex)
{
MessageBox.Show("更新出错!错误原因为:\n" + ex.Message + "\n");
}
}
}
之后显示的错误是:对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。
希望高手能详细点明原因!
解决方案 »
- 获取wifi信号的noise level
- C#调用Delphi写的dll文件中的函数出错!
- 求高人指点,打印的问题?
- office com组件读取Excel文件,如何循环读出所有数据?
- 求助:如何但选中LISTVIEW中的一项时使其中的信息同步显示在下方的TEXTBOX中
- 如何通过Command.ExecuteNonQuery()来调用oracle存储过程,存储过程带有两个字符串参数,sql语句如何写
- 关于这个令人头疼的问题:DataGrid
- 50分请教一个关于坐标概念的问题:
- C#事件委托的定义出现问题
- 读取excel数据的问题
- 高分求助---直线的显示问题
- C#中的winform项目 我想把项目中所有的页面信息获取到该如何做啊
最好用ado方式。
这两句话有问题:
da.SelectCommand = new OleDbCommand("select * from 第一学期", conn);
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
已经给定了主键,是不是UpdateCommand一定要写SQL更新语句的,不是已经自动生成的吗?
这段代码有问题不?我做的一个登陆框里就是这里出问题,说什么未讲对象设置实例化,是不是因为里面没有主键的信息啊?