一个常见问题是,如何获取从INSERT语句自动生成的ID的值。使用ODBC,你可以作与以下示例类似的任何事(假定“auto”为AUTO_INCREMENT字段):
INSERT INTO tbl (auto,text) VALUES(NULL,'text');
SELECT LAST_INSERT_ID();
或者,如果你仅打算将ID插入到另一表中,你可以:
INSERT INTO tbl (auto,text) VALUES(NULL,'text');
INSERT INTO tbl2 (id,text) VALUES(LAST_INSERT_ID(),'text');
请参见25.2.13.3节,“如何获得上次插入行的唯一ID”。
为了使某些ODBC应用程序(至少是Delphi和Access)获得更好的性能,可使用下述查询来找到新插入的行:
SELECT * FROM tbl WHERE auto IS NULL;
26.1.14.6. 我能使用MyODBC从.NET环境访问MySQL吗?
是。你可以使用odbc.net,通过MyODBC连接到MySQL。这里给出了一些从VC.NET和VB.NET连接到MySQL的基本示例。
· 请参见26.1.20.1节,“ODBC.NET: CSHARP(C#)”
· 请参见26.1.20.2节,“ODBC.NET: VB”
这里给出了Venu(MyODBC开发人员)撰写的另一篇好文章研究.NET环境下的MySQL,其中,给出了所有的MySQL .NET接口以及一些有用的例子。
注意: 在与MyODBC一起使用ODBC.NET的过程中,在获取空字符串的同时(长度为0),将给出SQL_NO_DATA异常。从站点http://support.microsoft.com/default.aspx?scid=kb;EN-US;q319243,可获取针对它的补丁。
MyODBC比其他ODBC驱动程序快很多。缓慢可能是因未使用下述选项造成的:
· 打开“ODBC跟踪”选项。遵循这里给出的指示说明,交叉检查是否未启用该选项。
如上图所示,“ODBC数据源管理器”“跟踪”选项卡的“何时跟踪”选项应始终指向“现在开始跟踪”,而不是“现在停止跟踪”。
· 使用了驱动程序的调试版本。如果你正在使用驱动DLL的调试版本,也会使查询处理变慢。你可以执行交叉检查,通过驱动DLL属性(在系统目录下,右击驱动DLL并点击“属性”)的“注释”区,检查DLL是否是调试版或发布版,如下图所示:
· 启用了“驱动跟踪和查询日志”。即使你打算使用驱动程序的调试版(在生产环境下总应使用发布版),也应确保禁止了“驱动跟踪和查询日志”选项(OPTION=4,524288),如下图所示: