我用的是ACCESS数据库,我添加一个TableAdapter,他不能自动生成insert,我手动添加了insert语句,但是当我用update把数据更新到数据库时,程序不报错,但是ACCESS数据库里却没有写入

解决方案 »

  1.   

    不能自动生成insert是不是因为你要操作的表没有主键列。
      

  2.   

    有主键呀,我也先查了的,也说这种情况会没有INSERT,我有主键,可是还是没有用INSERT,自己加上去的,程序里不报错,ACCESS数据库里也没有写进去
      

  3.   

    建议lz使用, SqlDataAdapter。要自动生成insert语句,
    首先表有主键。
    然后,使用下列语句。
    SqlDataAdapter adapter = new SqlDataAdapter( strSql, conn );
    SqlCommandBuilder cmd = new SqlCommandBuilder( adapter ); //自动创建更新用的sql语句
    adapter.Update();//更新数据库>序不报错,但是ACCESS数据库里却没有写入
    这个问题有可能是,你的控件中的数据没有更新到, DataTable中或者DataSet中。
    有些控件会有BeginEdit(),EndEdit()之类的方法。
    可在控件操作完成后,察看对应的表中数据是否被更新。希望对你有所帮助。
    good luck!
      

  4.   

    DataRow ObjDataRow = _027jyDataSet.sf.NewRow();
    ObjDataRow["bianhao"] = bianhao.Text.Trim().ToString();
    ObjDataRow["myname"] = myname.Text.Trim().ToString();
    ObjDataRow["sex"] = sex.Text.Trim().ToString();
    ObjDataRow["minzu"] = minzu.Text.Trim().ToString();
    ObjDataRow["brithday"] = brithday.Text.Trim().ToString();
    ObjDataRow["QQ"] = QQ.Text.Trim().ToString();
    ObjDataRow["tel"] = tel.Text.Trim().ToString();
    ObjDataRow["address"] = address.Text.Trim().ToString();
    ObjDataRow["number"] = number.Text.Trim().ToString();
    this._027jyDataSet.sf.Rows.Add(ObjDataRow);
    dataGridView1.DataSource = this._027jyDataSet.sf;
    这个是把添加工的内容先加到一个dataGridView1下面这个是一次性提交给数据库
    this.sfTableAdapter.Update(this._027jyDataSet.sf);
      

  5.   

    数据库是ACCESS,主键都有,就是程序不报错,内容写不到数据库里
      

  6.   

    dataGridView1.DataSource = this._027jyDataSet.sf; 
    //这个是把添加工的内容先加到一个dataGridView1 //下面这个是一次性提交给数据库 
    this.sfTableAdapter.Update(this._027jyDataSet.sf);把这两句的顺序换一下,在和控件绑定期间有可能无法更新数据库。good luck