数据库里有个列是标识,怎么才能删除行,具体情况是这样的,单号是标识,可是我得做个删除单子的操作。问题:
1.针对单子这中形式的数据库应该怎么设计。是不是不应该用标识,还是用。
2.要是用标识的话我的单子怎么删除。
3。要是不用标识。我该怎么设计。。今天就10分了,先谢过!!

解决方案 »

  1.   

    to1.针对单子这中形式的数据库应该怎么设计。是不是不应该用标识,还是用。
    ---用没有关系。to2.要是用标识的话我的单子怎么删除。 
    --你读每一条记录时,就连这一个字段读出来,你中意存在datatable,dataset,或字符串等等,都可以,你删除的时候,就去找到 标识 字段删除就可以了。to3。要是不用标识。我该怎么设计。。
    --不用的话,你可以设置一个字段(如PRO_ID,这类的),或组合字段作为主键,你删除的时候,就根据主键来删除就可以了
      

  2.   

    谢谢你的帮助,可是我还是不能删除记录
    我删除记录的代码如下:
    int intRowNumber = this.dataGridView1.CurrentCell.RowIndex;
    this.ds.tabales[0].rows[intRowNumber].delete();//在是数据集里删除记录
    this.da = new SqlDataAdapter(this.strSQl, this.sqlCon);
    this.sqlCmdBld = new SqlCommandBuilder(da);
    this.da.Update(ds.GetChanges(), tableName);//问题出在这。错误信息如下:对于不返回任何键列信息的 SelectCommand,不支持 DeleteCommand 的动态 SQL 生成。
      

  3.   

    说真的不太明白楼主的问题。总之,表里最好有个能唯一标识一行的键列,也就是通常说的Primary Key.
    数据表里,你可以增加一个字段自动增量,或IDENTITY字段嘛。也许这个字段没什么意义,但它可以唯一标识一行,而且没有它,一般SqlCommandBuilder无法自动生成DeleteCommand.要么你就拿几个字段组合成一个Primary Key.总之,表里必须要有一个唯一能够标识一行的信息。
      

  4.   

    我有 一个字段是标识。 现在详细的问题如下:背景如下:
    想做个有标识的数据库删除记录程序(就是存,删除单子的程序)。因为在2.0下SqlDataAdapter.UPDATE()方法,为 DataSet 中每个已插入、已更新或已删除的行调用相应的 INSERT、UPDATE 或 DELETE 语句。 所以,我针对删除有标识的记录是这样操作的,先在数据集中把记录删除,然后在用UPDATE来更新数据库。我删除记录的代码如下:
    int intRowNumber = this.dataGridView1.CurrentCell.RowIndex;
    this.ds.tabales[0].rows[intRowNumber].delete();//在是数据集里删除记录
    this.da = new SqlDataAdapter(this.strSQl, this.sqlCon);
    this.sqlCmdBld = new SqlCommandBuilder(da);
    this.da.Update(ds.GetChanges(), tableName);//问题出在这。错误信息如下:对于不返回任何键列信息的 SelectCommand,不支持 DeleteCommand 的动态 SQL 生成。
      

  5.   

    我是在数据源配置里建立查询语句的,同时建立新增、修改、和删除的SQL语句。int i = dataGridView1.CurrentRow.Index;
    BindingSource1.RemoveAt(i);
    TableAdapter1.Update(DataSet.datatable);
      

  6.   

    to:对于不返回任何键列信息的 SelectCommand,不支持 DeleteCommand 的动态 SQL 生成。在数据库表中设置主键,问题应该可以了,
    让你的标识列做主键也可以