C# 自动增量列(DataGridView,Microsoft Access)
我有一个表C# 自动增量列(DataGridView,Microsoft Access),c#,sql,database,winforms,ms-access,C#,Sql,Database,Winforms,Ms Access,我有一个表Employee,在Access数据库中有一堆列。我已经手动添加了几行,我的ID列被定义为自动递增(计数器) 我试图使用表单向表中添加一行,当然除了ID列之外,其他字段(textBox)都相同。问题是,如果我在表单中添加行,除了ID列之外,其他一切都可以正常工作。在DataGridView中显示-1,在数据库中显示正确的自动递增ID 问题是:如何匹配这些ID?我希望这个解释是可以理解的 这是我的addtodb按钮的代码 private void Button1_Click(object
Employee
,在Access数据库中有一堆列。我已经手动添加了几行,我的ID列被定义为自动递增(计数器)
我试图使用表单向表中添加一行,当然除了ID列之外,其他字段(textBox)都相同。问题是,如果我在表单中添加行,除了ID列之外,其他一切都可以正常工作。在DataGridView中显示-1
,在数据库中显示正确的自动递增ID
问题是:如何匹配这些ID?我希望这个解释是可以理解的
这是我的addtodb按钮的代码
private void Button1_Click(object sender, EventArgs e)
{
Form3 main = this.Owner as Form3;
if (main != null)
{
DataRow nRow = main.bestEmployeeDataSet.Tables[0].NewRow();
nRow[1] = full_name.Text;
nRow[2] = position.Text;
nRow[3] = age.Text;
nRow[4] = experience.Text;
nRow[5] = projects.Text;
nRow[6] = trainee.Text;
nRow[7] = hours.Text;
nRow[8] = late.Text;
nRow[9] = overall_num.Text;
main.bestEmployeeDataSet.Tables[0].Rows.Add(nRow);
main.employeeTableAdapter.Update(main.bestEmployeeDataSet.Employee);
main.bestEmployeeDataSet.Tables[0].AcceptChanges();
main.dataGridView1.Refresh();
full_name.Text = "";
position.Text = "";
age.Text = "";
experience.Text = "";
projects.Text = "";
trainee.Text = "";
hours.Text = "";
late.Text = "";
overall_num.Text = "";
}
}
int rc = main.dataGridView1.RowCount + 1;
nRow[0] = rc;
我试图这样做,但它只会根据我在DataGridView中的条目自动增加Id(我有3个条目,所以我得到Id=4)。在数据库中,下一个Id应该是14,因为我已经通过测试删除按钮删除了一些条目。“…它只会根据我在DataGridView中的条目自动增加Id(我有3个条目,所以我得到ID=4)在DB中,下一个ID应该是14……当用户在网格中创建一个“新”行时,很明显,您需要从DB而不是网格中获得新ID。Your
bestEmployeeDataSet.Tables[0]
必须包含自动增量ID字段。手动添加新行时:bestEmployeeDataSet.Tables[0].Rows.add(新对象[]{null,全名.Text,位置.Text,…});
,null
标识ID列,该列根据填充数据表时加载的数据表架构自动递增。检查ID列的属性并验证AutoIncrement
和AutoIncrementStep
属性的值。AllowDBNull
必须是false
。确定否,它没有如果使用null手动添加raw(我得到相同的id-1,-2,-3等),则sn不起作用,我非常确定这是不对的:DataColumn d=新DataColumn(“id”);d.AllowDBNull=false;另外,我不知道如何从数据库中获取新ID,这是我第一次使用数据库。您不必添加新列,也不必稍后从数据库中获取ID。您必须使用包含ID字段(来自数据库)的查询填充数据表。执行此操作时,DataTable对象的相应列将在表架构中包括自动递增ID字段的详细信息。如果您在Access数据库中实际定义了自动递增ID字段(而不仅仅是名为ID
)的字段,则会出现这种情况。请记住调用AcceptChanges()
在填充完数据表之后(无论使用何种方法填充)。请注意,在以前发布的代码段a中,要添加新行:(bestEmployeeDataSet.Tables[0].Rows.add(新对象[]{null,…)
),ID字段是DataTable定义中的第一个字段。此外,必须遵守所有字段的数据类型。例如,如果position.Text
用于设置整型
字段的值,则必须将该值转换为整型
。或其他值。