如果表存在,请检查访问数据库

时间:2012-07-27 09:41:58

标签: php ms-access adodb

有没有办法检查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。

2 个答案:

答案 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"));