使用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();
}
今天我换了一个方法,使用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();
}
相关文章推荐
- 使用ACCESS中隐藏的MSysObjects数据表来确定是否存在某个数据表!
- C# 判断 检测 access 建库 建表 文件是否存在等 数据操作 使用 ADOX
- C# 判断 检测 access 建库 建表 文件是否存在等 数据操作 使用 ADOX
- js使用数组判断提交数据是否存在相同数据
- js使用数组判断提交数据是否存在相同数据
- 解决使用Validform插件,datatype里用ajax验证数据是否已经存在时出现的问题
- c# 确定dynamic类型的数据对象是否存在某个属性
- Oracle判断数据是否存在(使用游标判断需要注意的问题)
- 当获取相似数据时,使用不同方法调用不同sp,但是使用同一个方法去用IIDataReader或者SqlDataReader读取数据时需要判断column name是否存在。
- 注册JQuery使用ajax调用后台方法,判断用户名、邮箱是否存在,并显示隐藏提示
- C# 如何确定SQL Server 中数据表是否存在
- 如何判断ACCESS数据表中的某条记录是否存在
- Windows下使用_access和_stat判断文件和目录是否存在的区别
- wex5中使用password控件,密码可以隐藏,判断输入框是否为空时,无法通过password的.val()方法获取数据
- js使用数组判断提交数据是否存在相同数据
- Access不能读取记录;在'MSysObjects' 上没有读取数据权
- 注册JQuery使用ajax调用后台方法,判断用户名、邮箱是否存在,并显示隐藏提示
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- Access中使用外部数据源
- 使用JDBC-ODBC操作Access数据