请问,如何通过语句判断一个Access数据表是否具有主键?我只知道SQL 中可以通过 sp_pkeys [TableName] 来查找主键,但 Access 有何办法??

解决方案 »

  1.   

    .........判断有无主键,对表进行操作,生成DbCommand,有主键则自动生成,否则手动生成
      

  2.   

    OleDbConnection   cnn   =   new   ...; 
    OleDbDataAdapter   da   =   new   ....( "select   *   from   table1 ",cnn); 
    da.MissingSchemaAction   =   MissingSchemaAction.AddWithKey; 
    DataTable   dt   =   new   ... 
    da.Fill(dt); 
    //通过PrimaryKey属性取主键 
    Response.Write(dt.PrimaryKey[0].ColumnName);   
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 
    http://feiyun0112.cnblogs.com/
      

  3.   

    ls 的 这么做有点麻烦 好久没上来 不知道有人回复了 嘿嘿 不好意思哈你使用Adapter得读一次表啊 这么麻烦
    我找到一方法
    IDbConnection OLEDBConn = new OleDbConnection(OLEDBconnectionStr);
    OLEDBConn.Open();
    // 当前表中主键
    DataTable OLEDBschemaTable = (OLEDBConn as OleDbConnection).GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, new Object[] { null, null, "交通事故" });
    for (int i = 0; i < OLEDBschemaTable.Rows.Count; i++)
    {
        Debug.WriteLine(OLEDBschemaTable.Rows[i].ItemArray[3].ToString());
    }
    OLeDB有GetOleDbSchemaTable这么一方法来得到表结构,这样就能直接取出主键了。
    对于SQL 可以用语句EXEC sp_pkeys @table_name=表名来查询表中的主键现在又一新问题,对于SQL,OLEDB可以获得主键,那么对于ODBC如何来判断主键???昨儿一天也没找到好方法,期待高手出现。
      

  4.   

    1)打开表后搜索是否有主键。
    2)Access主关键字索引自动创建的名称为PrimaryKey
    3)下面是删除该主关键子,添加自己的主键SQL语句,供参考
    Alter Table AccidentRecords Drop Constraint PrimaryKey
    Alter Table AccidentRecords Add Constraint Pk Primary Key(RecordID, Time_Date)
      

  5.   

    SQL OLEDB的都已经解决了,现在是ODBC的未能找到办法。还请各位继续帮忙