您的位置:首页 > 移动开发 > Objective-C

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

2007-04-28 08:30 363 查看
在昨天的随笔中,我写了篇关于使用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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐