使用ACCESS中隐藏的MSysObjects数据表来确定是否存在某个数据表!

在昨天的随笔中,我写了篇关于使用C#的强大异常判断和报错来判断是否已经存在了制定数据表,如果不存在则到网上下载。因为我考虑不周,没有加上代码,判断出错类型,所以很不准确。但是,应该说,这是一个思路,个人认为比较实用的思路。
今天我换了一个方法,使用ACCESS中隐藏的MSysObjects数据表来确定是否存在某个数据表!但是有前提条件,必须手动或者要本机设置MSysObjects数据表的可读属性。默认创建的ACCESS数据库的MSysObjects数据表是不支持JET SQL来读取的。
下面的代码是我的软件中的一部分,目的是对于已经存在的一个数据库的MSysObjects数据表进行读取,判断是不是存在制定的数据表,如果不存在,则创建一个新的数据表。
下面是代码:
   public   void  MakeTbuser( string  MDBPath,  string  NewTbuserName) 
        {
            
string  strConnection  =   " Provider=Microsoft.Jet.OleDb.4.0; " ;
            strConnection 
+=   @" Data Source= "   +  MDBPath;
            OleDbConnection objConnection 
=   new  OleDbConnection(strConnection);
            
string  OleDbCommandString  =   " SELECT Id FROM MSysObjects WHERE Name=' "   +  NewTbuserName  +   " ' AND Type=1 AND Flags=0 " ;
            OleDbCommand objCommand 
=   new  OleDbCommand(OleDbCommandString,objConnection);
            objConnection.Open();
            OleDbDataReader objDataReader 
=  objCommand.ExecuteReader();
            Boolean bb;
            
if  (objDataReader.Read())
                bb 
=   true ;
            
else
                bb 
=   false ;
            objDataReader.Close();
            
if  (bb  ==   false )
            {
                OleDbCommandString 
=   " CREATE TABLE  "   +  NewTbuserName;
                OleDbCommandString 
+=   "  (  " ;
                OleDbCommandString 
+=   " AutoID AUTOINCREMENT(1,1) PRIMARY KEY,UserName TEXT(50),UserPsd TEXT(50), " ;
                OleDbCommandString 
+=   " LastLoginTime DateTime,LoginTimes Int,MailInbox TEXT(10) " ;
                OleDbCommandString 
+=   " ); " ;
                objCommand 
=   new  OleDbCommand(OleDbCommandString, objConnection);
                objCommand.ExecuteNonQuery();
            }
            objCommand.Dispose();
            objConnection.Close();
        }

转载于:https://www.cnblogs.com/Athrun/archive/2007/04/28/730572.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值