操作SQL数据库时dataGridView与 datatable绑定
adapter.Update(datatable);只能更新有主键的表吗?
对于没有主键的表,大家是如何让dataGridView 与  datatable同步更新的?

解决方案 »

  1.   

    没有主键,只要有一个字段是唯一的就可以啊
    还可以动态的创建一个GUID列来做为临时列操作数据库
      

  2.   

    数据库中的表是不可以有主键的,这是数据本身的限制
    但查询出来后的表可以保证可以设置主键的:
    如:
    原表:
    C1  C2  C3
    A   AA  AB
    A   BA  BB
    B   AA  AB
    B   BA  BB查询C1列只为A的记录C2  C3
    AA  AB
    BA  BB则C2列可以保证不存在重复记录,我尝试设置tablename.PrimaryKey 还是不行
                string str = "select * from usr_mf";            conn = new SqlConnection("");
                SqlCommand com = new SqlCommand(str, conn);
                conn.Open();
                tablename = new DataTable();
                adapter = new SqlDataAdapter(com);
                scb = new SqlCommandBuilder(adapter);            adapter.Fill(tablename);
                DataColumn[] keys = new DataColumn[1];
                keys[0] = tablename.Columns[0];
                tablename.PrimaryKey = keys;//设置一个主键            dataGridView1.DataSource = tablename;请问还有其他方法吗
      
      

  3.   

    没有也行 不过就是那一列别有重复的数据就行了
                string text1 = this.textBox1.Text;
                string text2 = this.textBox2.Text;
                DateTime text3 = DateTime.Parse(this.textBox3.Text);
                string text4 = this.textBox4.Text;
                string text5 = this.textBox5.Text;
                string text6 = this.textBox6.Text;
                try
                {
                    DialogResult result = MessageBox.Show("修改确认!", "您是否确定要修改记录?", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (result == DialogResult.Yes)
                    {
                        db.open();
                        string sql = @"update standard set StandardName='"+text1+"',Published='"+text3+"',nationalstandard='"+text4+"',railwaystandard='"+text5+"',internationalstandard='"+text6+"'where standardid= '"+text2+"'";
                        int intexec = db.enqsqlcomm(sql);
                        if (intexec > 0)
                            MessageBox.Show("更改成功!");
                        db.close();
                    }
                }
                catch (Exception err)
                {
                    MessageBox.Show(err.Message);
                }
      

  4.   

    楼上不是用 adapter.Update(datatable) 更新
    无意义
      

  5.   

    添加标识列对插入,更新的效率影响很大
    如果要使用DATAGRIDVIEW的绑定,并用adapter.Update(datatable) 更新 
    一定要有主键吗?
      

  6.   

    是的,adapter.Update(datatable) 更新必须要有主键!