想要查询:
SELECT student.姓名, class.班级名称, homework.作业编号, homework.作业名称, submit.是否已交, homework.需提交时间
FROM ((class INNER JOIN homework ON class.班级编号 = homework.班级编号) INNER JOIN student ON class.班级编号 = student.班级编号) INNER JOIN submit ON (student.学号 = submit.学号) AND (homework.作业编号 = submit.作业编号);显示在dataGridView。然后可以自己修改提交情况。请问要改如何处理?这是与access数据库连接的。谢谢了!

解决方案 »

  1.   

    用OLEDBDataAdapter的Update方法来更新
    但是不支持多表更新
      

  2.   

    submit表没有主键的,好像都无法用dataGridView直接打开。用Update能方便的显示出一节方便的修改吗?
      

  3.   

    datagridview数据更新
    使用OleDbDataAdapter 
    DataSet ds = new DataSet();
    OleDbDataAdapter da;
    OleDbCommandBuilder  cb = new OleDbCommandBuilder(da);
    da.Update(ds);
    this.dataGridView1.DataSource = ds.Tables[0];
      

  4.   

    似乎还是不行。
                    OleDbConnection conn = new OleDbConnection(connectionString);
                    string sql = "select * from submit";
                    DataSet ds = new DataSet();
                    OleDbDataAdapter adapter1;
                    adapter1 = new OleDbDataAdapter(sql, conn);
                    OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter1);
                    adapter1.Update(ds);
                    dataGridView2.DataSource = ds.Tables[0];
    请问这里有错吗?编译都出错了
      

  5.   

    连接就是了吗,有什么问题吗?
    ACCESS用OLE不是就可以吗?
      

  6.   

    连接没问题,根据人生如梦的说法,我改了这样:
            string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Environment.CurrentDirectory + "\\综合实验.mdb";
            OleDbDataAdapter adapter1;
            DataSet ds= new DataSet() ;        private void button3_Click(object sender, EventArgs e)
            {
                try
                {
                    OleDbConnection conn = new OleDbConnection(connectionString);
                     //string sql = "SELECT student.姓名, class.班级名称, homework.作业编号, homework.作业名称, submit.是否已交, homework.需提交时间 FROM ((class INNER JOIN homework ON class.班级编号 = homework.班级编号) INNER JOIN student ON class.班级编号 = student.班级编号) INNER JOIN submit ON (student.学号 = submit.学号) AND (homework.作业编号 = submit.作业编号);";
                    string sql = "select * from student";
                    DataSet ds = new DataSet();
                    adapter1 = new OleDbDataAdapter(sql, conn);                OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter1);
                    adapter1.Update(ds);
                    dataGridView2.DataSource = ds.Tables[0];
                    tablenull = true;
                }
                catch (OleDbException err)
                {
                    MessageBox.Show(err.Message, "打开失败!");
                }        }是想能实现多个表的数据都连到dataGridView。但是运行时错误:adapter1.Update(ds); Update 无法找到 TableMapping['Table'] 或 DataTable“Table”。
      

  7.   

    c#复合查询不能update,必须自己写更新语句.
      

  8.   

    DataSet ds = new DataSet();
    ds现在没有表的,你更新肯定出错
      

  9.   

    这个说的正确,还是老老实实的血Update语句更新吧,如果不想写SQL,可以试试PDF.NET数据开发框架。
      

  10.   

    你的Connection不用Open吗?没有像你这么干过!
      

  11.   

    使用PDF.NET框架生成一个家庭作业的实体类:Homework,然后写如下代码:Homework work=new Homework();
    work.作业编号="xxxxxxx" //假定这是主键字段对应的属性
    ...为其它属性设置值EntityQuery<Homework>.Update(work);//保存到数据库
      

  12.   


    啥时候Open数据库连接,完全由数据框架决定,它比你手工开关更有效率,比如把你的这个方法加入某个组件的事务中。默认的数据连接对象采用何种数据库类型,通过应用程序的配置文件生成,比如:<Connections>
    <add Name="SqlConn" ConnectionString="...." Provider="SqlServer" />
    <!--<add Name="AccessConn" ConnectionString="...." Provider="OleDb" />-->
    </Connections>