.NET获取ACCESS自动编号列的一种方法

4 篇文章 0 订阅
我之前上网查阅了相关的信息,发现这方面的文章不是太多,虽然不长用,但是有时真要用时使人抓...
我说下我的思路
首先我们需要数据库的架构信息,获得表名(其实我个人认为可以获得数据库各表的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个值,第一个是表名(没记错就是),第二个是字段名,第三个就是是否为自动增长类型了,第四个好象是判断数据库是否区分大小写,第五个一直没搞清楚
                {
                    //这个列是自动编号列
                }
            }
            
        }

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值