您的位置:程序门 -> vb -> 数据库(包含打印,安装,报表)



轻松拿50分,关于获取数据库主键问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


轻松拿50分,关于获取数据库主键问题[已结贴,结贴人:hokeen]
发表于:2007-09-20 17:30:25 楼主
请教如何在vb中实现获取服务器数据库里,某一表中所有的主键。目的是在datagrid中显示时,对主键列设置颜色以区分。
发表于:2007-09-20 20:06:471楼 得分:10
你知道主键是那一列就行,

另外颜色做不到,因为datagrid并不是真实的网格
发表于:2007-09-20 20:23:172楼 得分:0
颜色不行的话,可以对grid里对应的主键列设置为locked,问题是怎么用程序把主键找出来。
发表于:2007-09-20 20:24:053楼 得分:0
从系统表获得
发表于:2007-09-20 21:22:394楼 得分:10
用adox即可    
    dim       cnn       as       new       adodb.connection    
            dim       cat       as       new       adox.catalog    
            dim       tbl       as       table    
                dim       col       as       new       adox.column    
    cnn.open       "provider=microsoft.jet.oledb.4.0; "       &       _    
                        "data       source=       c:\windows\desktop\library\library1\db2.mdb "    
        set       cat.activeconnection       =       cnn    
        for       each       tbl       in       cat.tables    
                debug.print       tbl.name    
        next        
    获得每个表    
    下面获得表中每个字段得名称,尺寸及类型    
            dim       tblname       as       new       adox.table    
            set       tblname       =       cat.tables( "check_out ")    
            for       each       col       in       tblname.columns    
                debug.print       col.name       &       "           "       &           col.definedsize       &       "           "       &       col.type    
            next    
            dim       ind       as       new       adox.index    
            for       each       ind       in       tblname.indexes    
                debug.print       ind.name    
            next    
    end       sub        
     
    根据col.type来判断是不是主键或索引等
发表于:2007-09-20 21:37:035楼 得分:0
select   column_name   from     information_schema.key_column_usage   where   table_name= 'tablename '   and   constraint_name   like   '%pk_% '

其中的tablename就是你要找的主键的表名
这样得到的recordset中的数据就是主键字段的字段名
发表于:2007-09-20 21:41:016楼 得分:30
比如你要找northwind数据库中的orders表中的主键
那么就这样用:
select   column_name   from     information_schema.key_column_usage   where   table_name= 'orders '   and   constraint_name   like   '%pk_% '
这样查询结果就是orderid,就是主键

另外:
constraint_name   like   '%pk_% '
这里用这样也行
constraint_name   =   'pk_tablename '
orders表就是这样的:
constraint_name   =   'pk_orders
发表于:2007-09-21 13:25:567楼 得分:0
用读数据库系统表的方式已经实现。


快速检索

最新资讯
热门点击