java中如何获取我在ACCESS数据库中查询到的某个字段所对应的主键的值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中如何获取我在ACCESS数据库中查询到的某个字段所对应的主键的值?相关的知识,希望对你有一定的参考价值。

比如说我用select语句做精确查询,查询到对应的字段,但是我想得到这个字段所对应的主键,我该怎么办?

那你就不能用精确查询单个值了,至少也需要查主键字段和你想要的字段吧,然后你可以用个键值对的东西存放 参考技术A select 主键字段名 from 表名 where column=我所得知道的字段名

如何从 Java 中的 Oracle SQL 选择中获取原始脚本输出而不是查询结果

【中文标题】如何从 Java 中的 Oracle SQL 选择中获取原始脚本输出而不是查询结果【英文标题】:How do I get the raw script output instead of the query result from an Oracle SQL select in Java 【发布时间】:2018-01-31 21:22:55 【问题描述】:

我需要通过 Java 应用程序将一些数据备份为 INSERT 语句。我在 SQL Developer 中能找到的最直接的方法是使用 /*insert*/ 运行选择。

例如:

SELECT /*insert*/ * FROM table_name WHERE col_a = 1 AND col_b = 2;

如果我在 SQL Developer 中将此查询作为脚本 (F5) 运行,我会得到我需要的结果。问题是我找不到从我的 Java 应用程序中将这个查询作为脚本运行并将 DB 文本输出返回给程序的方法。我想将脚本输出作为字符串接收,然后将其打印到文件中。

通常我使用JdbcTemplatePreparedStatementCreator 运行所有查询,但JdbcTemplate 中的所有方法似乎都需要某种行映射来将查询内容传输到对象的属性。

【问题讨论】:

将查询结果转换为INSERT 语句是SQL Developer 所做的事情,而不是数据库。您必须编写自己的逻辑来将 ResultSet 数据转换为 INSERT 语句。 @Andreas 谢谢你的回答。我选择听从您的建议并实现了一个行映射器,它将结果集中的行作为插入语句输出。我认为这不是最优雅的解决方案,但它确实有效。 【参考方案1】:

正如所指出的,/*insert*/ 是一个 sqldev / sqlcl 功能。但是,您可以将 SQLcl 包含到您的 java 代码中并调用这些功能。这是一个获取插入语句的示例。然后运行它们:

sqlcl.setStmt(<SCRIPTOUTPUTHERE>);
sqlcl.run();

我在这里写了一篇关于它的博客文章:

http://krisrice.io/2016-11-15-sqlcl-as-library-in-existing-programs/

Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@//localhost:1521/XE","klrice","klrice");

//#get a DBUtil but won't actually use it in this example
DBUtil util = DBUtil.getInstance(conn);

//#create sqlcl
ScriptExecutor sqlcl = new ScriptExecutor(conn);
ByteArrayOutputStream bout = new ByteArrayOutputStream();
BufferedOutputStream buf = new BufferedOutputStream(bout);
sqlcl.setOut(buf);

//#setup the context
ScriptRunnerContext ctx = new ScriptRunnerContext();

//#set the context
sqlcl.setScriptRunnerContext(ctx);
ctx.setBaseConnection(conn);

//#change the format
sqlcl.setStmt("set sqlformat insert");
sqlcl.run();

//#run the sql
sqlcl.setStmt("select * from user_objects");
sqlcl.run();

String results = bout.toString("UTF8");
System.out.println(results);

【讨论】:

嗨,克里斯,在分享您自己的东西的链接时,请务必明确声明归属! 未来肯定会更详细。 您的回答似乎很好。然而,我最终实现了我自己的“as insert”输出生成器。我会接受这个答案,因为您指出的图书馆似乎确实解决了这个问题,除了提供其他几种可能性。非常感谢。

以上是关于java中如何获取我在ACCESS数据库中查询到的某个字段所对应的主键的值?的主要内容,如果未能解决你的问题,请参考以下文章

在access中用vba如何把SQL语句查询到的一个值赋给变量?

javascript如何获取从数据库查询到的值

不通过 C# 从 ms access 数据库返回任何数据,如果我在 ms access 上运行相同的查询,它将获取数据

获取查询的结果 c# - Access 2010

在 Access 报告中使用查询参数

如何保证微信公众平台开发access