• 使用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();
            }

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    Java多线程系列--“JUC锁”03之 公平锁(一)
    Java多线程系列--“JUC锁”02之 互斥锁ReentrantLock
    Java多线程系列--“JUC锁”01之 框架
    BIO,NIO,AIO
    Java多线程系列--“JUC线程池”06之 Callable和Future
    Java多线程系列--“JUC线程池”05之 线程池原理(四)
    Java多线程系列--“JUC线程池”04之 线程池原理(三)
    Java多线程系列--“JUC线程池”03之 线程池原理(二)
    Java多线程系列--“JUC线程池”02之 线程池原理(一)
    Java多线程系列--“JUC线程池”01之 线程池架构
  • 原文地址:https://www.cnblogs.com/Athrun/p/730572.html
Copyright © 2020-2023  润新知