广告
返回顶部
首页 > 资讯 > 后端开发 > GO >在golang项目中查询sqlx后数据库连接仍在使用
  • 394
分享到

在golang项目中查询sqlx后数据库连接仍在使用

2024-04-05 00:04:48 394人浏览 薄情痞子
摘要

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《在golang项目中查询sqlx后数据库连接仍在使用》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~问题

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《在golang项目中查询sqlx后数据库连接仍在使用》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

我正在一个使用 sqlx 和 postgres 的 Golang 项目中工作。当应用程序启动时,我打开与数据库的连接并按如下方式使用它:

var connro *sqlx.db
var connrw *sqlx.db
...

/ getinstance - will return the connection opened to the database
func getinstance(readonly bool) *sqlx.db {

    if readonly {
        return connro
    }

    return connrw
}

问题是在某些代码块中连接仍在使用中,这里是一个示例:

instancerw := database.getinstance(false)
instancero := database.getinstance(true)
...

err := instancero.get(&idfuncionario, `
            select id 
            from t_funcionario 
            where codigo_externo = $1 `,
            i.funcionarioid)
        if err != nil {
            log.println(err)
            return errors.new("erro ao identificar funcionário.")
        }

        // verifica se o item é granel
        // caso não seja
        if *i.itemgranelid == 0 {
            // verifica se o item está disponível
            err = instancero.get(&localidade_id, `
                select coalesce(localidade_id, 0) 
                from t_item 
                where id = $1
            `, i.itemid)
            if err != nil {
                log.println(err)
                return errors.new("não foi possível identificar tipo do item.")
...
            }

当我尝试测试它做类似的事情时,测试不会打开很多连接。这里是一些测试代码:

i := 600
    for i != 0 {
        if true {
            err := db.Select(&item, `SELECT * FROM t_item LIMIT 10`)
            if err != nil {

            }
            err = db.Select(&categoria, `SELECT * FROM t_categoria LIMIT 10`)
            if err != nil {

            }
            err = db.QueryRow(`INSERT INTO t_categoria
                (
                    nome, 
                    ativo
                )
                VALUES ($1, $2)`, fmt.Sprintf("cateToTeste%v", i), true).Scan(&itemget)
            if err != nil {

            }

            err = db.Get(&itemget, `SELECT COALESCE(localidade_id, 0) 
                    FROM t_item 
                    WHERE id = $1`, 150)
            if err != nil {

            }

            log.Println("ok")
            i--
        }       
    }
    log.Println("Tudo ok!!")

有时我获得最大连接数,但应用程序崩溃了。


解决方案


感谢@mkopriva! 我仍然不知道为什么连接仍在使用中,但为了解决我的问题,我使用 tx 并创建一个函数 defer a commitrollback (提交和回滚都返回错误,我在关闭时遇到问题连接,因为 - 在 tx 情况下):

func commitORRollback(db *sqlx.Tx, ROLLBACK *bool) {
    if *ROLLBACK {
        if err := db.Rollback(); err != nil {
            ...
        }
    } else {
        ...
    }
}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注编程网公众号,一起学习编程~

您可能感兴趣的文档:

--结束END--

本文标题: 在golang项目中查询sqlx后数据库连接仍在使用

本文链接: https://www.lsjlt.com/news/596689.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在springboot项目中使用druid数据库连接池
    如何在springboot项目中使用druid数据库连接池?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Druid连接池是阿里巴巴开源的数据库连接池项目,后来贡献给Apac...
    99+
    2023-06-14
  • c3p0数据库连接池如何在Java项目中使用
    今天就跟大家聊聊有关c3p0数据库连接池如何在Java项目中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。c3p0是什么c3p0的出现,是为了大大提高应用程序和数据库之间访问效率...
    99+
    2023-05-31
    java 数据库连接池 c3p0
  • proxool数据库连接池如何在Java项目中使用
    今天就跟大家聊聊有关proxool数据库连接池如何在Java项目中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Proxool是一种Java数据库连接池技术。sourceforg...
    99+
    2023-05-31
    java proxool 数据库连接池
  • 如何在PHP项目中优化数据库查询性能?
    如何在PHP项目中优化数据库查询性能?在开发PHP项目时,数据库查询是一个非常常见且重要的操作。然而,随着数据量的增加和业务的复杂化,数据库查询性能的优化显得尤为重要。本文将介绍一些常见的数据库查询性能优化策略,以帮助开发人员提升PHP项目...
    99+
    2023-11-02
    查询优化 数据库索引 数据库缓存
  • 怎么在ssm项目中使用redis缓存查询数据
    怎么在ssm项目中使用redis缓存查询数据?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。xml配置:<bean id=&qu...
    99+
    2022-10-18
  • 怎么在Java项目中使用jdbc对mysql数据库进行连接
    怎么在Java项目中使用jdbc对mysql数据库进行连接?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。具体如下:import java.sql.Connection...
    99+
    2023-05-31
    java jdbc mysql
  • 如何在Web项目中连接阿里云数据库RDS?
    随着互联网的发展,数据量的不断增大,传统的数据库已不能满足大规模数据的存储和处理需求。因此,云数据库应运而生,它能够提供弹性扩展、高可用性、安全性等优势。本文将详细介绍如何在Web项目中连接阿里云数据库RDS。 步骤一:创建阿里云数据库RD...
    99+
    2023-10-29
    阿里 数据库 项目
  • 如何在Java项目中模拟一个数据库连接池
    本文章向大家介绍如何在Java项目中模拟一个数据库连接池,主要包括如何在Java项目中模拟一个数据库连接池的使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。Java的特点有哪些Java的特点有哪...
    99+
    2023-06-06
  • 如何在Java项目中利用jdbc-odbc桥接方式来连接数据库
    如何在Java项目中利用jdbc-odbc桥接方式来连接数据库?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、配置数据源控制面板下搜索管理工具->ODBC数据源(32位...
    99+
    2023-05-31
    jdbc odbc java
  • vue项目使用node连接数据库的方法(前后端分离)
    目录写在前面编写顺序开始2.制作后端 node 服务器3.编写 node 连接数据库4.实现登录、修改密码和获取用户信息接口5.完成前后端交互结束学习关键语句:vue连接mysql数...
    99+
    2022-12-22
    vue使用node连接数据库 vue前后端分离项目
  • 在Xamarin.Android项目中如何使用数据库
    这篇文章将为大家详细讲解有关在Xamarin.Android项目中如何使用数据库,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在Xamarin.Android项目中使用预设数据库的具体操作步骤如下:(1)...
    99+
    2023-06-05
  • 如何在SpringBoot项目中使用Oracle11g数据库
    在SpringBoot项目中使用Oracle11g数据库 具体步骤如下: 1:下载ojdbc6.jar ,随便放个英文目录位置就好 2:命令行下输入下行,注意最后-Dfile 为自己...
    99+
    2022-11-12
  • 如何在SpringBoot项目中使用redis数据库
    今天就跟大家聊聊有关如何在SpringBoot项目中使用redis数据库,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。REmote DIctionary Server(Redis) ...
    99+
    2023-06-07
  • 如何在Xamarin.iOS项目中使用预设数据库
    这篇文章给大家分享的是有关如何在Xamarin.iOS项目中使用预设数据库的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在Xamarin.iOS项目中使用预设数据库当开发者准备好一个预设数据库文件后,就可以将这个...
    99+
    2023-06-05
  • MongoDB数据库如何在spring boot项目中使用
    MongoDB数据库如何在spring boot项目中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。依赖<dependency> <groupId&g...
    99+
    2023-05-31
    springboot mongodb
  • 怎么在Oracle中使用sqlplus连接数据库
    怎么在Oracle中使用sqlplus连接数据库?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。方式1(本机): / as sysdba在ora...
    99+
    2022-10-18
  • 如何在Flask中使用SQLAlchemy连接数据库
    这篇文章将为大家详细讲解有关如何在Flask中使用SQLAlchemy连接数据库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、连接mysql在 Flask-SQLAlchemy 中,数据...
    99+
    2023-06-14
  • 怎么在Java中使用JDBC连接数据库
    本篇文章给大家分享的是有关怎么在Java中使用JDBC连接数据库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、使用JDBC连接数据库1.使用JDBC-ODBC桥驱动程序连接...
    99+
    2023-06-06
  • 如何使用SQL语句在MySQL中进行数据连接和联合查询?
    如何使用SQL语句在MySQL中进行数据连接和联合查询?数据连接和联合查询是 SQL 语言中常用的技巧,能够在多个表中获取和筛选所需的数据。在 MySQL 中,我们可以通过使用 JOIN 子句来实现数据连接,使用 UNION 和 U...
    99+
    2023-12-17
    MySQL 数据连接 SQL语句
  • 如何在SpringBoot 中使用 Druid 数据库连接池
    目录1.Maven中的pom文件2.SpringBoot 配置文件3.配置Druid数据源实例4.过滤器和Servlet5.使用@ServletComponentScan注解,6.D...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作