diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml new file mode 100644 index 0000000..44706a1 --- /dev/null +++ b/.idea/dataSources.xml @@ -0,0 +1,12 @@ + + + + + mysql.8 + true + com.mysql.cj.jdbc.Driver + jdbc:mysql://43.143.245.135:3306/wangaodev + $ProjectFileDir$ + + + \ No newline at end of file diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml new file mode 100644 index 0000000..4bb53ca --- /dev/null +++ b/.idea/sqldialects.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/mysql/mysql_rowquery.go b/mysql/mysql_rowquery.go new file mode 100644 index 0000000..06c83a2 --- /dev/null +++ b/mysql/mysql_rowquery.go @@ -0,0 +1,60 @@ +package main + +import ( + "database/sql" + "fmt" + _ "github.com/go-sql-driver/mysql" //自动执行init() + "log" +) + +var db *sql.DB //是一个数据库连接池对象 + +func initDb() (err error) { + //数据库信息 + dsn := "root:123456@tcp(43.143.245.135:3306)/wangaodev" + //连接数据库 + db, err = sql.Open("mysql", dsn) //不会校验用户名和密码是否正确 + if err != nil { + //dsn 格式不正确会报错 + return err + } + //校验用户名和密码是否正确 + //尝试连接数据库 + err = db.Ping() + if err != nil { + return err + } + log.Printf("connect %s success.\n", dsn) + //设置最大连接数 + db.SetMaxOpenConns(10) + //设置最大空闲连接数 + db.SetMaxIdleConns(5) + return nil +} + +// 表结构对象 +type user struct { + id int + name string + age int +} + +// 查询单行数据 +func queryRow(id int) { + var u user + //查询单行记录的sql语句 + sqlstr := "select id, name, age from user where id=?" + //执行并且拿到结果 + db.QueryRow(sqlstr, id).Scan(&u.id, &u.name, &u.age) //从链接池中拿一个连接出来去数据库查询单条记录,scan方法自动释放连接,也就是必须调用scan方法 + fmt.Printf("user:%#v\n", u) +} + +// go链接mysql示例 +func main() { + err := initDb() + if err != nil { + log.Fatalf("init DB failed:%v", err) + } + log.Println("init DB success.") + queryRow(2) +}