一旦成功连接到数据库,我们就可以开始动态创建表。在Golang中,我们可以使用SQL语句来执行数据库操作。下面是一个简单的示例代码,演示了如何创建一个名为`users`的用户表:
```go
func createTable(db *sql.DB) {
createTableSQL := `
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
age INT
) ENGINE=InnoDB`
_, err := db.Exec(createTableSQL)
if err != nil {
panic(err.Error())
}
}
```
在上面的代码中,我们定义了一个`createTable`函数,接受一个`*sql.DB`对象作为参数。然后我们使用SQL语句定义了一个名为`users`的表,该表包含了`id`、`name`和`age`三个列。
`CREATE TABLE IF NOT EXISTS`语句确保了如果`users`表已经存在,那么不会再次创建它。`ENGINE=InnoDB`指定了表的存储引擎为InnoDB。
在执行`db.Exec()`函数时,我们将SQL语句传递给它,并忽略了返回值(通过写`_`)。如果创建表时发生任何错误,我们会抛出异常。
执行创建表操作
要执行创建表操作,我们只需要在连接成功后调用`createTable`函数。下面是一个完整的示例代码:
```go
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "用户名:密码@tcp(localhost:3306)/数据库名")
if err != nil {
panic(err.Error())
}
defer db.Close()
createTable(db)
}
func createTable(db *sql.DB) {
createTableSQL := `
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
age INT
) ENGINE=InnoDB`
_, err := db.Exec(createTableSQL)
if err != nil {
panic(err.Error())
}
}
```
通过以上代码,我们可以轻松地在Golang中动态地创建数据库表。