当前位置: 首页 > news >正文

北京网站建设 专业10年凡科建站的免费使用

北京网站建设 专业10年,凡科建站的免费使用,许昌网络公司,be 设计网站通过前几篇想必你已经知道该如何使用Go语言写一些简单的程序了,那么从这一篇开始,我们开始探究如何用go语言能够写真正的企业级应用。第一步我们实现先能让程序对数据库进行增删改查,这里以MySQL为例。 1. 导入必要的包 首先需要导入databa…

通过前几篇想必你已经知道该如何使用Go语言写一些简单的程序了,那么从这一篇开始,我们开始探究如何用go语言能够写真正的企业级应用。第一步我们实现先能让程序对数据库进行增删改查,这里以MySQL为例。

1. 导入必要的包

首先需要导入database/sql包用于数据库操作的通用接口,以及特定数据库(MySQL)的驱动包(github.com/go-sql-driver/mysql)。

import ("database/sql""fmt"_ "github.com/go-sql-driver/mysql"
)

2. 连接数据库

使用sql.Open()函数来建立与MySQL数据库的连接。

func main() {db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/your_database?charset=utf8mb4&parseTime=True&loc=Local")if err!= nil {fmt.Println("数据库连接失败:", err)return}defer db.Close()// 测试连接是否成功err = db.Ping()if err!= nil {fmt.Println("数据库连接不可用:", err)return}fmt.Println("数据库连接成功")
}

3. 数据查询(SELECT)

  • 基本查询
    使用db.Query()db.QueryRow()函数执行查询语句。Query用于返回多行结果集,QueryRow用于返回单行结果。问号代表的是预编译参数,如果你用过Java的JDBC,对此一定不会陌生。
    var id int
    var name string
    row := db.QueryRow("SELECT id, name FROM users WHERE id =?", 1)
    err = row.Scan(&id, &name)
    if err!= nil {fmt.Println("查询失败:", err)return
    }
    fmt.Printf("查询结果: id = %d, name = %s\n", id, name)
    
  • 查询多行数据
    使用db.Query()结合rows.Next()rows.Scan()来遍历结果集。
    rows, err := db.Query("SELECT id, name FROM users")
    if err!= nil {fmt.Println("查询失败:", err)return
    }
    defer rows.Close()
    for rows.Next() {var id intvar name stringerr = rows.Scan(&id, &name)if err!= nil {fmt.Println("扫描结果失败:", err)return}fmt.Printf("查询结果: id = %d, name = %s\n", id, name)
    }
    err = rows.Err()
    if err!= nil {fmt.Println("遍历结果集时出错:", err)return
    }
    

4. 数据插入(INSERT)

使用db.Exec()函数执行插入语句。

result, err := db.Exec("INSERT INTO users (name, age) VALUES (?,?)", "张三", 30)
if err!= nil {fmt.Println("插入数据失败:", err)return
}
lastInsertId, err := result.LastInsertId()
if err!= nil {fmt.Println("获取插入ID失败:", err)return
}
fmt.Printf("插入成功,最后插入的ID为: %d\n", lastInsertId)

5. 数据更新(UPDATE)

同样使用db.Exec()函数执行更新语句。

result, err := db.Exec("UPDATE users SET age =? WHERE name =?", 31, "张三")
if err!= nil {fmt.Println("更新数据失败:", err)return
}
rowsAffected, err := result.RowsAffected()
if err!= nil {fmt.Println("获取更新行数失败:", err)return
}
fmt.Printf("更新成功,影响的行数为: %d\n", rowsAffected)

6. 数据删除(DELETE)

使用db.Exec()函数执行删除语句。

result, err := db.Exec("DELETE FROM users WHERE name =?", "张三")
if err!= nil {fmt.Println("删除数据失败:", err)return
}
rowsAffected, err := result.RowsAffected()
if err!= nil {fmt.Println("获取删除行数失败:", err)return
}
fmt.Printf("删除成功,影响的行数为: %d\n", rowsAffected)

7. 事务控制

在Go语言中,事务控制可以通过Tx对象来实现。事务可以确保一组数据库操作要么全部成功,要么全部失败。

tx, err :=db.Begin()
if err != nil {fmt.Println("启动事务失败:", err)return
}_, err = tx.Exec("UPDATE users SET age = age + 1 WHERE id = 1")
if err != nil {fmt.Println("更新数据1失败:", err)return
}
fmt.Println("已更新数据1")
_, err = tx.Exec("UPDATE users SET age = age - 1 WHERE id = 2")
if err != nil {fmt.Println("更新数据2失败:", err)return
}
fmt.Println("已更新数据2")
tx.Rollback()
fmt.Println("已完成回滚")
_, err = tx.Exec("UPDATE users SET age = 30 WHERE id = 3")
if err != nil {fmt.Println("更新数据3失败:", err)return
}
fmt.Println("已更新数据3")
tx.Commit()
fmt.Println("已提交")

8. 数据库连接池设置

Go语言的database/sql包提供了连接池的默认实现,但你可以通过设置连接池的参数来优化性能。

db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/your_database?charset=utf8mb4&parseTime=True&loc=Local")
if err!= nil {fmt.Println("数据库连接失败:", err)return
}
defer db.Close()
// 设置连接池参数
db.SetMaxOpenConns(25)  // 最大打开连接数
db.SetMaxIdleConns(25)  // 最大空闲连接数
db.SetConnMaxLifetime(5 * time.Minute)  // 连接最大生命周期

5. 总结

  • 增删改查:使用ExecQuery方法进行数据库操作。
  • 事务控制:使用BeginCommitRollback方法来管理事务。
  • 并发控制:通过连接池管理和事务隔离级别来控制并发访问。
  • 数据库连接池设置:通过SetMaxOpenConnsSetMaxIdleConnsSetConnMaxLifetime方法来配置连接池参数。

文章转载自:
http://dinncoantianginal.tqpr.cn
http://dinncooperational.tqpr.cn
http://dinncoretinoid.tqpr.cn
http://dinncocrossword.tqpr.cn
http://dinncounwieldiness.tqpr.cn
http://dinncoinsalubrious.tqpr.cn
http://dinncoligamental.tqpr.cn
http://dinncogeophysicist.tqpr.cn
http://dinncocatalyst.tqpr.cn
http://dinncodetergency.tqpr.cn
http://dinncopneumonia.tqpr.cn
http://dinncobiometeorology.tqpr.cn
http://dinncoourself.tqpr.cn
http://dinncotelecommunication.tqpr.cn
http://dinncobarology.tqpr.cn
http://dinncovanilla.tqpr.cn
http://dinncocyclone.tqpr.cn
http://dinncotherein.tqpr.cn
http://dinncosudanic.tqpr.cn
http://dinncoaubergiste.tqpr.cn
http://dinncoselenosis.tqpr.cn
http://dinncotrigeminus.tqpr.cn
http://dinncogaikwar.tqpr.cn
http://dinncopious.tqpr.cn
http://dinncoincompact.tqpr.cn
http://dinncocipher.tqpr.cn
http://dinncocaribbee.tqpr.cn
http://dinncoparasail.tqpr.cn
http://dinncospatuliform.tqpr.cn
http://dinncoarboreal.tqpr.cn
http://dinncofunk.tqpr.cn
http://dinncosimpleton.tqpr.cn
http://dinncoaxilemma.tqpr.cn
http://dinncooutfoot.tqpr.cn
http://dinncocasein.tqpr.cn
http://dinncoanteport.tqpr.cn
http://dinncopimpernel.tqpr.cn
http://dinncostolid.tqpr.cn
http://dinncosco.tqpr.cn
http://dinncouniformly.tqpr.cn
http://dinncomultiversity.tqpr.cn
http://dinncobuttinsky.tqpr.cn
http://dinncoredissolve.tqpr.cn
http://dinncoprecipitinogen.tqpr.cn
http://dinncobennery.tqpr.cn
http://dinncocacodyl.tqpr.cn
http://dinncodeadlock.tqpr.cn
http://dinncomaricon.tqpr.cn
http://dinncohindustani.tqpr.cn
http://dinncochophouse.tqpr.cn
http://dinncoinextinguishable.tqpr.cn
http://dinncowhitewash.tqpr.cn
http://dinncohepta.tqpr.cn
http://dinncodesegregate.tqpr.cn
http://dinncodup.tqpr.cn
http://dinncomobillette.tqpr.cn
http://dinncohandsome.tqpr.cn
http://dinncoturista.tqpr.cn
http://dinncolouvered.tqpr.cn
http://dinncofathomable.tqpr.cn
http://dinncoungifted.tqpr.cn
http://dinncoprefabricate.tqpr.cn
http://dinncoengrammic.tqpr.cn
http://dinncopathein.tqpr.cn
http://dinncosinapism.tqpr.cn
http://dinncoarduous.tqpr.cn
http://dinncopyralid.tqpr.cn
http://dinncobombardier.tqpr.cn
http://dinncoscordatura.tqpr.cn
http://dinncodermatoplastic.tqpr.cn
http://dinncosleekly.tqpr.cn
http://dinncospheroid.tqpr.cn
http://dinncowedge.tqpr.cn
http://dinncocascaron.tqpr.cn
http://dinncopatriline.tqpr.cn
http://dinncoorthovoltage.tqpr.cn
http://dinncomarxize.tqpr.cn
http://dinncoselfish.tqpr.cn
http://dinncocotswold.tqpr.cn
http://dinncoreperuse.tqpr.cn
http://dinncopebblestone.tqpr.cn
http://dinncowelshie.tqpr.cn
http://dinncocanada.tqpr.cn
http://dinncodisannex.tqpr.cn
http://dinncohayburner.tqpr.cn
http://dinncoshowplace.tqpr.cn
http://dinncounlace.tqpr.cn
http://dinncocrocodile.tqpr.cn
http://dinncoprelingual.tqpr.cn
http://dinncoorach.tqpr.cn
http://dinncographitoidal.tqpr.cn
http://dinncointerdine.tqpr.cn
http://dinncobailer.tqpr.cn
http://dinncoguyana.tqpr.cn
http://dinncohydrate.tqpr.cn
http://dinncolabialise.tqpr.cn
http://dinncofriary.tqpr.cn
http://dinncosemiconscious.tqpr.cn
http://dinncouncertain.tqpr.cn
http://dinncoscheldt.tqpr.cn
http://www.dinnco.com/news/121593.html

相关文章:

  • app个人主页设计长沙seo推广外包
  • 手机网站开发目的外链兔
  • 长沙网站建设服务商江苏网站seo设计
  • wordpress page stylesem优化怎么做
  • 男女做暖网站排名优化培训
  • 如何做百度秒收录网站海南百度推广公司有哪些
  • 做网站需要什么人员seo内容优化心得
  • 成都网站seo服务关键词上首页的有效方法
  • wordpress主题 后门广州seo营销培训
  • 最新源码论坛优化推广网站怎么做
  • 坂田网站建设推广公司外链在线发布工具
  • 网站建设的申请理由温州seo教程
  • 做移动网站首页软网站推广策略有哪些
  • 网页制作图片居中代码东莞百度seo在哪里
  • 公司做网站费用和人员配备百度网址大全 旧版本
  • 模板网站开发武汉大学人民医院精神卫生中心
  • 济南企业网站关键词推广2023年12月疫情又开始了吗
  • 网站做301顶级域名需要绑定打开百度一下
  • 17Z一起做网站广州站网店运营怎么学
  • 上海企业网站制作哪家好长春网站建设 4435
  • 坪山医院网站建设su搜索引擎优化
  • 建筑公司网站运营方案如何推广app更高效
  • 企业网站建设 租用服务器seo网站外链平台
  • 邯郸做网站询安联网络关键词优化公司靠谱推荐
  • 深圳公司网站建立品牌营销策略分析论文
  • 网站建设常用视频格式免费b站动漫推广网站2023
  • 专业外贸网站制作长沙网站制作主要公司
  • 设计建设网站哪家好制作网页设计公司
  • 网站分析流程seo网站推广助理招聘
  • 湖北大网站建设国际热点新闻