当前位置: 首页 > 知识库问答 >
问题:

未配置连接

於德馨
2023-03-14
public static void saveCallLink(String oktell_login, String link)
        throws SQLException {
    Connection conn = DBConnection.getDataSource().getConnection();
    DSL.using(conn)
            .insertInto(CALLS)
            .columns(CALLS.USER_ID, CALLS.CALL_LINK)
            .values(
                    DSL.select(USERS.ID)
                            .from(USERS)
                            .where(USERS.OKTELL_LOGIN.equal(oktell_login))
                            .fetchOne().value1()
                    , link
            ).execute();
    conn.close();
}

detachedException:无法执行查询。未配置连接org.jooq.impl.abstractquery.execute(abstractquery.java:316)org.jooq.impl.abstractresultquery.fetchlazy(abstractresultquery.java:365)org.jooq.impl.abstractresultquery.fetchlazy(abstractresultquery.java:352)org.jooq.impl.abstractresultquery.fetchone(abstractresultquery.java:517)

共有1个答案

贺元明
2023-03-14

你的错误就在这里:

DSL.using(conn)
   .insertInto(CALLS)
   .columns(CALLS.USER_ID, CALLS.CALL_LINK)
   .values(
       DSL.select(USERS.ID)
          .from(USERS)
          .where(USERS.OKTELL_LOGIN.equal(oktell_login))
          .fetchOne().value1() // This query cannot be executed
       , link
   ).execute();

无法执行在insert语句中间运行的查询,因为它没有附加configuration(上下文)。作为一般的经验法则,永远记住:

  • DSLContext创建“附加”到DSLContext.Configuration()的查询,因此可以直接执行
  • DSL创建“未附加”的查询,因此无法执行,只能嵌入到其他查询中

有两种解决方案

DSL.using(conn)
   .insertInto(CALLS)
   .columns(CALLS.USER_ID, CALLS.CALL_LINK)
   .values(
       DSL.using(conn) // Use DSLContext, not DSL here
          .select(USERS.ID)
          .from(USERS)
          .where(USERS.OKTELL_LOGIN.equal(oktell_login))
          .fetchOne().value1()
       , link
   ).execute();

但是请注意,这将从客户端运行两个单独的查询,这可能不是您真正想要的。您需要:

DSL.using(conn)
   .insertInto(CALLS)
   .columns(CALLS.USER_ID, CALLS.CALL_LINK)
   .values(
       DSL.field(
           DSL.select(USERS.ID)
              .from(USERS)
              .where(USERS.OKTELL_LOGIN.equal(oktell_login))
       )
       , link
   ).execute();

这与下面的单个SQL查询相同:

INSERT INTO calls (user_id, call_link)
VALUES ((SELECT id FROM users WHERE oktell_login = :oktell_login), :link)
 类似资料:
  • 假设我有Gemfire定位器 我有一个Spring 3.1 MVC应用程序,它想要使用Gemfire缓存。我使用的是Spring数据Gemfire 1.2.2和Gemfire 6.6.1 因此,我将以下内容添加到我的 假设外部JAR依赖项都在Maven中正确定义。还假设我加载了一个属性文件,该文件定义了上面引用的属性值。定位器属性定义为使用已经启动的Gemfire定位器的IP和端口。 我相信这应该

  • 我试图通过HttpClientBuilder设置一个HttpClient。我还看了看HttpClientConnectionManager,这里开始混淆了。 在ConnectionManager上,或者更确切地说,在PoolghttpClientConnectionManager上,有一些方法可以: 关闭过期连接 关闭空闲连接 连接何时被视为过期? 它何时空闲? 当来自池中的连接关闭时会发生什么?

  • Hyperledger Composer使用连接配置文件连接到运行时。 创建连接配置文件 1.创建一个名为connection.json的新文件,其中包含Hyperledger Fabric v1.0的以下信息。} 为Hyperledger Fabric v1.0创建连接配置文件,使用以下格式: { "type": "hlfv1", "orderers":

  • 问题内容: 我试图在Mac Mini上配置Jenkins,以便从BitBucket存储库中提取iPhone App的代码。在“ Xcode插件”配置区域中,我尝试添加项目的git地址,但是它一直失败。经过研究,看来我必须使用ssh部署密钥来连接Bitbucket和Jenkins。到目前为止,我所做的是: 并且我将此SSH密钥添加到了我的BitBucket配置文件中。 不幸的是,它仍然无法正常工作。

  • 本文向大家介绍Oracle连接配置解读,包括了Oracle连接配置解读的使用技巧和注意事项,需要的朋友参考一下 安装ORACLE数据库软件,dbca安装数据库后,需要配置listener连接数据库。这里有一些概念比较难理解,记录一些分析实战结论。 从连接端讲起。 1 连接数据库的方式 oracle的连接串有几部分构成,这里就按sqlplus为例,一个完成的连接串遵循下面格式 下面先讲只有liste

  • 我正在尝试连接Hive数据库与我的Java代码。我搜索了很多关于Hive_Client的信息,但是有很多错误和依赖,有人能帮我找到代码和库文件吗。