0

有没有办法检查表是否存在于 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 的。

4

3 回答 3

1

SELECT * 在 LIMIT 1 的表上如何捕获错误/异常?

(LIMIT 在 ACCESS 中称为 TOP。)

所以像:

SELECT TOP 1 * FROM <YOURTABLE>;

在 ACCESS 方面,我学会了实用,因为它几乎不是一个数据库。

于 2012-07-27T09:43:44.107 回答
1

在 COM 可用的情况下,您将添加对 DAO 的引用并检查TableDefs集合。由于您不能这样做,您将不得不求助于查询隐藏MSysObjects表:

SELECT COUNT(*) FROM MSysObjects WHERE Name = 'myTable' AND Type = 1

(有关此系统表的更多详细信息:使用 MSysObjects

编辑:根据这个问题,您可以使用 ADO 访问架构数据,这应该允许您确定表是否存在:

$rs_meta = $conn->OpenSchema(20, array(Null, Null, Null, "TABLE")); 
于 2012-07-27T09:46:34.427 回答
0
$createtable = $conn->execute("CREATE TABLE $tblname (fieldsample CHAR(1))");

您实际上可以修改查询以实现您想要的结果:

$createtable = $conn->execute("CREATE TABLE IF NOT EXISTS $tblname (fieldsample CHAR(1))");

如果该查询不存在,将执行(创建表)。如果它已经存在,则不会执行此查询。

于 2012-07-27T09:46:22.477 回答