有没有办法检查mdb文件中是否存在表?我使用PHP和ADOdb连接来连接。
这是我的代码
$conn = new COM("ADODB.Connection");
$conn->open("DRIVER={Microsoft Access Driver (*.mdb)}; PWD=somepassword; DBQ=".dirname(__FILE__)."\filename.MDB;");
if (table exists){ \\ where i need the code to check
$createtable = $conn->execute("CREATE TABLE $tblname (fieldsample CHAR(1))");
}else{
$insertqry = $conn->execute("INSERT INTO $tblname (field) VALUES (value)");
}
整天都在浏览语法,但到目前为止我所看到的只是VB和ASP。
答案 0 :(得分:1)
带有LIMIT 1的表上的SELECT *怎么样,并捕获错误/异常?
(在ACCESS中,LIMIT称为TOP。)
类似于:
SELECT TOP 1 * FROM <YOURTABLE>;
在ACCESS方面我学会了实用,因为它几乎不是一个数据库。
答案 1 :(得分:1)
在COM可用的情况下,您可以添加对DAO的引用并检查TableDefs
collection。由于你不能这样做,你将不得不求助于查询隐藏的MSysObjects
表:
SELECT COUNT(*) FROM MSysObjects WHERE Name = 'myTable' AND Type = 1
(有关此系统表的更多详细信息:Using MSysObjects)
编辑:根据这个问题,您可以使用ADO访问架构数据,这可以让您确定表是否存在:
$rs_meta = $conn->OpenSchema(20, array(Null, Null, Null, "TABLE"));