当前位置: 首页 > 面试题库 >

使用sql数据库驱动程序

鲍驰
2023-03-14
问题内容

最终用户(开发人员或生产人员)可以推荐一个Sql驱动程序包,最好使用“ database /
sql”包。我对Postgres,ODBC,MySql(以及可能用于高容量的其他商品(即,不是Sqlite)的其他商品)感兴趣,这些商品最好可在Windows和/或Linux(最好同时使用)上使用。令我感兴趣的是,它可能需要最近进行了更新/维护,并且必须与最新的Go版本一起使用。效率(吞吐量)显然很重要。欢迎任何相关评论。


问题答案:

GO-SQL-Driver(MySQL):

https://github.com/Go-SQL-Driver/MySQL

样表:

CREATE TABLE `userinfo` (
    `uid` INT(10) NOT NULL AUTO_INCREMENT,
    `username` VARCHAR(64) NULL DEFAULT NULL,
    `departname` VARCHAR(64) NULL DEFAULT NULL,
    `created` DATE NULL DEFAULT NULL,
    PRIMARY KEY (`uid`)
)

CREATE TABLE `userdetail` (
    `uid` INT(10) NOT NULL DEFAULT '0',
    `intro` TEXT NULL,
    `profile` TEXT NULL,
    PRIMARY KEY (`uid`)
)

样例代码:

package main

import (
    _ "github.com/Go-SQL-Driver/MySQL"
    "database/sql"
    "fmt"
)

func main() {
    db, err := sql.Open("mysql", "reckhou:reckhou@/test?charset=utf8")
    checkErr(err)

    //Insert
    stmt, err := db.Prepare("INSERT userinfo SET username=?,departname=?,created=?")
    checkErr(err)

    res, err := stmt.Exec("reckhou", "IT", "2010-10-02")
    checkErr(err)

    id, err := res.LastInsertId()
    checkErr(err)

    fmt.Println(id)

    // Update
    stmt, err = db.Prepare("update userinfo set username=? where uid=?")
    checkErr(err)

    res, err = stmt.Exec("update", id)
    checkErr(err)

    affect, err := res.RowsAffected()
    checkErr(err)

    fmt.Println(affect)

    //Query
    rows, err := db.Query("SELECT * FROM userinfo")
    checkErr(err)

    for rows.Next() {
        var uid int
        var username string
        var department string
        var created string
        err = rows.Scan(&uid, &username, &department, &created)
        checkErr(err)
        fmt.Println(uid)
        fmt.Println(username)
        fmt.Println(department)
        fmt.Println(created)
    }

    //Delete
    stmt, err = db.Prepare("delete from userinfo where uid=?")
    checkErr(err)

    res, err = stmt.Exec(id)
    checkErr(err)

    affect, err = res.RowsAffected()
    checkErr(err)

    fmt.Println(affect)

    db.Close()

}

func checkErr(err error) {
    if err != nil {
        panic(err)
    }
}

PostgreSQL:

https://github.com/bmizerany/pq

样表:

CREATE TABLE userinfo
(
    uid serial NOT NULL,
    username character varying(100) NOT NULL,
    departname character varying(500) NOT NULL,
    Created date,
    CONSTRAINT userinfo_pkey PRIMARY KEY (uid)
)
WITH (OIDS=FALSE);

CREATE TABLE userdeatail
(
    uid integer,
    intro character varying(100),
    profile character varying(100)
)
WITH(OIDS=FALSE);

样例代码:

import (
    "database/sql"
    "fmt"
    _ "github.com/bmizerany/pq"
)

func main() {
    db, err := sql.Open("postgres", "user=reckhou password=reckhou dbname=test sslmode=disable")
    checkErr(err)

    //Insert
    stmt, err := db.Prepare("INSERT INTO userinfo(username,departname,created) VALUES($1,$2,$3) RETURNING uid")
    checkErr(err)

    res, err := stmt.Exec("reckhou", "IT", "2010-10-01")
    checkErr(err)

    id, err := res.LastInsertId()
    checkErr(err)

    fmt.Println(id)

    // Update
    stmt, err = db.Prepare("update userinfo set username=$1 where uid=$2")
    checkErr(err)

    res, err = stmt.Exec("update", 1)
    checkErr(err)

    affect, err := res.RowsAffected()
    checkErr(err)

    fmt.Println(affect)

    // Query
    rows, err := db.Query("SELECT * FROM userinfo")
    checkErr(err)

    for rows.Next() {
        var uid int
        var username string
        var department string
        var created string
        err = rows.Scan(&uid, &username, &department, &created)
        checkErr(err)
        fmt.Println(uid)
        fmt.Println(username)
        fmt.Println(department)
        fmt.Println(created)
    }

    // Delete
    stmt, err = db.Prepare("delete from userinfo where uid=$1")
    checkErr(err)

    res, err = stmt.Exec(1)
    checkErr(err)

    affect, err = res.RowsAffected()
    checkErr(err)

    fmt.Println(affect)

    db.Close()

}

func checkErr(err error) {
    if err != nil {
        panic(err)
    }
}


 类似资料:
  • 我正在尝试在android应用程序中使用JDBC连接到SQL Server。我导入了sqljdbc4。jar进入我的应用程序,但当我 conn=驾驶员管理器。getConnection(连接字符串); 我得到下面的错误:连接字符串是 jdbc:sqlserver://xxx.xxx.xxx.xxx:1433;加密=快速;用户=用户名;密码=密码; 谁能告诉我出了什么问题吗?如果我将相同的代码放入常

  • 问题内容: 我正在尝试使用android应用中的JDBC连接到SQL Server。我将sqljdbc4.jar导入到我的应用程序中,但是当我进入 conn = DriverManager.getConnection(connString); 我得到以下错误:连接字符串是 jdbc:sqlserver://xxx.xxx.xxx.xxx:1433; encrypt = fasle; user =

  • 我想从Linux实例使用TLS1.2连接到我的数据库实例,但我无法这样做。我使用以下配置: < Li > Java JDK:Amazon corretto open JDK版本:" 1.8.0_252" < li>JDBC驱动程序:Microsoft SQL server MSSQL-JDBC:8 . 2 . 2 . JRE 8 < li >连接字符串:JDBC:SQL server://[我的数

  • 我创建了一个存储空间类型的结构,并创建了一个扫描函数来帮助查询数据库中的行。我有问题插入这种类型。 我可以使用以下sql插入数据; 如果在database/sql/driver中使用值接口; 类型值接口{} 价值是司机必须能够处理的价值。它要么是nil,要么是以下类型之一的实例: int64 浮动64 布尔 []字节 字符串[*]除行以外的所有位置。下一步。 时间,时间 并使用此代码; 最后,我将

  • 当使用 JPA 2.1 Eclipselink 2.5.2 UCANAccess 4.0.4 我们有这样一个问题,即表的命名将使用引号“。这是因为底层实现并不真正知道使用什么方言,从而导致与MSAccess不兼容。这就导致了例如这样的表注释。 为了解决这个问题,我们必须在orm.xml中包含: 现在,普通查询可以工作,但在命名查询中使用JPQL将失败,因为结果SQL查询将引用所有列名:

  • 我现在正在下载我用驱动器API上传的sql数据库。有一个备份是肯定的,但当我尝试打开文件时,我得到一个文件无法打开的错误。 编辑:我解决了上面的问题。现在我想最后上传和下载sql数据库。 我的代码: