zoukankan      html  css  js  c++  java
  • .NET获取ACCESS自动编号列的一种方法(转)

    我之前上网查阅了相关的信息,发现这方面的文章不是太多,虽然不长用,但是有时真要用时使人抓...
    我说下我的思路
    首先我们需要数据库的架构信息,获得表名(其实我个人认为可以获得数据库各表的PrimaryKey已经足够了,因为.Net的Guid.NewGuid()方法做主键实在是太好了),然后根据表名循环查询除系统表之外的所有表来获取相关信息.很遗憾,我原先一直打算只用ADO.NET就完成所有的事情,但是寻找了好久都没有发现相关的方法,当然这和个人的水平有着重要的因素,不罗嗦了下面是代码

    public void ACCESS_MSG(string DataPath)
            
    {
                
    try
                
    {
                    System.Data.DataTable dt 
    = new System.Data.DataTable();
                    System.Data.OleDb.OleDbConnection conn 
    = new System.Data.OleDb.OleDbConnection();
                    DataOpt.Data opt 
    = new DataOpt.Data();
                    conn 
    = opt.OLEDBCONN(DataPath);//这里是我自己写的连接类
                    dt=conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Primary_Keys, null);//这里获取数据的架构信息
                    Get_TableName(dt,DataPath);
                    conn.Close();
                }

                
    catch (System.Exception ex)
                
    {
                    Console.Write(ex.Message.ToString());
                }

            }

            
    protected void Get_TableName(System.Data.DataTable TableMsg, string DataPath)
            
    {
                
    int i = 0;
                
    string TableName = "", ParmetersList="",PrimaryKeys="";
                
    for (i = 0; i < TableMsg.Rows.Count; i++)
                
    {
                    
    if (TableMsg.Rows[i]["Table_Name"].ToString().Contains("MSys"!= true)
                    
    {
                        TableName 
    = TableMsg.Rows[i]["Table_Name"].ToString().ToUpper();
                        Console.WriteLine(TableName);
                        PrimaryKeys 
    = TableMsg.Rows[i]["COLUMN_NAME"].ToString();
                        ParmetersList 
    = Get_ParmeterList(TableName, DataPath);
                        DataOpt_Table(TableName, DataPath, ParmetersList, PrimaryKeys);
                        
                    }

                }

            }

    以上代码已经获取了除系统表外所有用户表的名,下面开始获取自动编号列,我使用了ADO,非ADO.NET...

    protected void Get_AutoID(string TableName)
            
    {
                ADODB.Recordset rs 
    = new ADODB.Recordset();
                
    string conn = "你的数据库连接";
                
    int i = 0;
                rs.Open(
    "select * from " + TableName, conn, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic, -1);
                
    for (i = 0; i < rs.Fields.Count; i++)
                
    {
                    
    if (rs.Fields[i].Properties[2].Value = true)//这里的特性集合中有5个值,第一个是表名(没记错就是),第二个是字段名,第三个就是是否为自动增长类型了,第四个好象是判断数据库是否区分大小写,第五个一直没搞清楚
                    {
                        
    //这个列是自动编号列
                    }

                }

                
            }

    好了至此自动编号列被取出了..

  • 相关阅读:
    AcWing 157. 树形地铁系统 (hash判断树同构)打卡
    AcWing 156. 矩阵 (哈希二维转一维查询)打卡
    AcWing 144. 最长异或值路径 01字典树打卡
    AcWing 143. 最大异或对 01字典树打卡
    AcWing 142. 前缀统计 字典树打卡
    AcWing 139. 回文子串的最大长度 hash打卡
    AcWing 138. 兔子与兔子 hash打卡
    常用C库函数功能及用法
    编程实现C库函数
    C语言面试题5
  • 原文地址:https://www.cnblogs.com/aion111/p/1778956.html
Copyright © 2011-2022 走看看