我有一个MS Access前端和一个通过ODBC连接的MySQL后端。
我在网上查了一下,很多人都有同样的问题,但我仍然找不到正确的答案。我查看了stackoverflow和官方文件:http://dev.mysql.com/doc/connector-odbc/en/connector-odbc-usagenotes-functionality-last-insert-id.html
SELECT LAST_INSERT_ID()
on access只返回undefined function last\u insert\u id()
使用时:SELECT*FROM tbl,其中auto为空
我将tbl替换为我的表格名称,将auto替换为我的表格ID(表格的主键),它显示:
您输入的设置对该属性无效
。有没有办法插入最后一个ID?还是我应该放弃并找到另一种方法来获取身份证?
谢啦
如果ID
是自动递增字段,则以下操作将起作用:
SELECT TOP 1 ID FROM tbl ORDER BY ID DESC
如果另一个用户同时插入记录,它不起作用corrcetly.best方法是使用存储程序返回添加新记录的id(在多用户应用程序中)
CREATE PROCEDURE dbo.AddAsset
@Name VARCHAR(500),
@URL VARCHAR(2000),
@new_identity INT = NULL OUTPUT
AS
BEGIN
SET NOCOUNT ON;
INSERT dbo.Assets(Name, URL) SELECT @Name, @URL;
SET @new_identity = SCOPE_IDENTITY();
END
GO
然后在前端使用这个sp
这取决于插入记录的方式。
如果您使用的是记录集,那么这将起作用:
Dim rstRec As DAO.Recordset
Dim lngNewID As Long
Set restrec = CurrentDb.OpenRecordset("dbo_customers3", dbOpenDynaset, dbSeeChanges)
rstRec.AddNew
rstRec!FirstName = "Albert"
rstRec.Update
rstRec.Bookmark = rstRec.LastModified
lngNewID = rstRec!ID
rstRec.Close
因此,对于记录集,必须使用书签(因为更新会将记录指针从插入的记录中弹出来——editRecord不会这样做)
如果您使用SQLINSERT语句,那么对于MySQL,推荐的方法是您最初给定的语法。当然,你不能不使用Access sytanx。简单的更改是,您使用MySQL语法,因此您需要使有问题的查询通过(并确保设置记录=yes(这应该是将查询转换为通过的情况)。
如果有多个用户,在数据库中使用SELECT TOP是一个非常糟糕的主意。
因此,您将以下语句放在传递查询中。
SELECT LAST_INSERT_ID();
然后在VBA代码中,您可以:
Dim strSQL As String
Dim lngNewID As Long
strSQL = "INSERT into dbo_customers3 (FirstName, LastName) VALUES ('Albert', 'Kallal')"
CurrentDb.Execute strSQL
lngNewID = CurrentDb.OpenRecordset("QryPassReturn")(0)
无论其他用户是否插入到此表中,甚至如果在上述两个语句之间的时间内其他用户插入,上述操作都将“返回”您的会话的lastID。
问题内容: 我正在尝试获取类似mysql_insert_id()的mysql命令;它检索最后插入的行的auto_increment ID。我该怎么做才能在Java中获得它? 我的姓氏声明为INT。我不知道在rs.get中使用什么以及参数。 问题答案: 尝试使用别名
问题内容: 我目前正在为大学的一个班级做项目。我正在学习有关连接和操作数据库的信息,我们正在使用Microsoft .accdb文件。 这是我到目前为止所拥有的。 当寻找“ sun.jdbc.odbc.JdbcOdbcDriver”时,我得到以下输出。 似乎很容易解决。看来我想念司机或类似的东西。但是,我很难找到解决方法。JDK随附驱动程序吗?我需要单独下载吗?是否取决于我的操作系统?(Mac O
2:在odbcDriverConnect(con,...)中:ODBC连接失败 如果在64位R(R console或Rstudio)中运行,将返回以下错误: 警告消息:1:在odbcDriverConnect(con,...)中:[RODBC]错误:状态IM003,代码160,由于系统错误126:找不到指定的模块,无法加载消息指定的驱动程序。(Microsoft Access驱动程序(*.mdb,
我需要将升级到。 Microsoft网站有以下信息: sqljdbc41.jar ;类库提供了对JDBC4.0 API的支持。它包括JDBC4.0驱动程序的所有特性以及JDBC4.0 API方法。不支持JDBC 4.1(将引发异常“SQLFeaturenotSupportedException”)。 因此,已经在java中运行的JDBC API将正常工作。 但是,Microsoft ODBC驱动程
我正尝试使用WinApp驱动程序在Visual Studio 2017中自动化扩展(WPF)的UI,但在使用inspect.exe(Windows SDK)捕获元素时找不到自动化id 最初,当通过inspect.exe检查时,找不到自动化ID。因此,我在XAML文件的automation属性中设置了automation id,并将新的VSIX安装回Visual Studio中,但在捕获元素时,上述
TL;DR:同时使用Hive和MySql JDBC有问题吗? 我正在开发一个应用程序,它使用MySql JDBC驱动程序执行多个SQL查询,然后它还使用Hive JDBC发送另一个Hive查询。 现在发生的情况是,MySql查询正常工作,当代码尝试执行配置单元查询时,它会抛出以下异常: 现在,在抛出这个异常之后,查询将正确执行。 我的猜测是,由于我同时加载了MySql和Hive驱动程序,MySql