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

潍坊+网站建设小程序是怎么制作出来的

潍坊+网站建设,小程序是怎么制作出来的,搜索引擎优化包括哪些内容,什么是企业型网站GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Http) 11、GO学习之 微框架(Gin) 12、GO学习之 数据库(mysql) 文章目录 GO系列前言一、简介二、准备操作三、Insert 操作四、Delete 操作五、Update 操作5.1 获取数据库链接5.2 更新操作 六、Select 操作五、事务六、总结 前言 按照公司目前的任务go 学习是必经之路了虽然行业卷不过技多不压身依旧努力 数据持久化是必不可少的一部分平日里开发如果是专注于业务开发那 99% 的工作也就是CRUD增删改查工程师了。 废话不多说说了也没用直接上手来操作对数据库进行访问。 一、简介 对数据库操作少不了各个语言对数据库操作的驱动就像 JAVA 中有 mysql-driver 的驱动包拉取下来就可以通过JDBC 对数据库操作了当然 Spring、Mybatis 等框架也提供了对数据库很方便的操作。 那在 Go 中也是提供了驱动 github.com/go-sql-driver/mysql,我们通过 go get 拉取驱动来进行CRUD操作。 使用命令go get github.com/go-sql-driver/mysql 来拉取驱动库。 二、准备操作 首先在 MYSQL 数据库创建一个测试库叫 go_demo然后来添加一张 User 表来操作脚本如下 新建表 DROP TABLE IF EXISTS users; CREATE TABLE users (id int NOT NULL AUTO_INCREMENT,name varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,address varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,age int(0) NULL DEFAULT NULL,create_time date NOT NULL,update_time date NOT NULL,PRIMARY KEY (id) USING BTREE ) ENGINE InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci ROW_FORMAT Dynamic;插入测试数据 INSERT INTO users (name, address, age, create_time, update_time) VALUES (悟空, 五指山下, 18, NOW(), NOW()); INSERT INTO users (name, address, age, create_time, update_time) VALUES (唐僧, 大唐东土, 21, NOW(), NOW()); INSERT INTO users (name, address, age, create_time, update_time) VALUES (八戒, 高老庄, 19, NOW(), NOW()); INSERT INTO users (name, address, age, create_time, update_time) VALUES (沙森, 流沙河, 25, NOW(), NOW());查询数据 select * from users;三、Insert 操作 下面的示例中首先使用 database/sql 和 github.com/go-sql-driver/mysql 包来连接 MySQL 数据库获取到一个连接示例 db, 再通过 db.Exec() 函数来执行 insert 语句成功把 白龙马 指派到了师徒四人的队伍中。 package mainimport (database/sqlfmtlogtime_ github.com/go-sql-driver/mysql )func main() {// 连接 MYSQL 数据库db, err : sql.Open(mysql, root:123456tcp(127.0.0.1:3306)/go_demo)if err ! nil {log.Fatal(err)}// defer 关键字来延迟关闭连接defer db.Close()// 插入数据insertSql : INSERT INTO users (name, address, age, create_time, update_time) VALUES (?, ?, ?, ?, ?)datetime : time.Now()_, insertErr : db.Exec(insertSql, 白龙马, 东海, 18, datetime, datetime)if insertErr ! nil {log.Fatal(insertErr)}fmt.Println(插入数据成功) } 四、Delete 操作 下面的示例中首先使用 database/sql 和 github.com/go-sql-driver/mysql 包来连接 MySQL 数据库获取到一个连接示例 db, 再通过 db.Exec() 函数来执行 delete 语句成功把 悟空 逐出了队伍。 可以看出来从获取数据库连接到执行 SQL 语句Go 代码基本一样的想必定有框架做了此事了…… package mainimport (database/sqlfmtlog_ github.com/go-sql-driver/mysql )func main() {// 连接mysql数据库db, err : sql.Open(mysql, root:123456tcp(127.0.0.1:3306)/go_demo)if err ! nil {log.Fatal(err)}defer db.Close()//删除悟空deleteSql : delete from users where id ?_, deleteErr : db.Exec(deleteSql, 1)if deleteErr ! nil {log.Fatal(deleteErr)}fmt.Println(删除成功) } 五、Update 操作 更新操作其实无外乎也是获取数据库连接执行 update 语句我们可以先封装一个公共的函数来获取数据库连接在执行操作。 5.1 获取数据库链接 这里的包是 common 在另一个包中并且 Conn 首字母大写表明外部包是可以调用的。 package commonimport (database/sqllog_ github.com/go-sql-driver/mysql )func Conn() *sql.DB {// 连接mysql数据库db, err : sql.Open(mysql, root:123456tcp(127.0.0.1:3306)/go_demo)if err ! nil {log.Fatal(err)}return db } 5.2 更新操作 下面案例从上面封装的 common 包中通过 Conn() 函数获取数据库连接再进行操作。 **注意**这里需要用 common.Conn() 获取连接不能用 *common.Conn() 获取如果用 *common.Conn() 获取则在 后续的判断中 db ! nil 出错mismatched types sql.DB and untyped nil因为db是一个指针类型不能直接与 nil 进行比较。 package mainimport (fmtloggotest.com/test/src/common )func main() {// 获取数据库连接db : common.Conn()if db ! nil {defer db.Close()// 更新八戒的地址不再是高老庄updateSql : update users set address ? where id ?_, updateErr : db.Exec(updateSql, 天上人间, 3)if updateErr ! nil {log.Fatal(updateErr)}fmt.Println(更新成功)} else {fmt.Println(获取数据库连接失败)} }六、Select 操作 在下面的案例中 通过 自己封装的 common.Conn() 获取一个数据库链接利用 defer 关键词来延迟关闭链接通过 db.Query() 来执行一个查询循环遍历rows.Next() 来判断是否有下一条记录如果返回 true大括号{}表示一个代码块其中包含了每次迭代式要执行的代码。在{}中可以对每条记录进行操作比如利用 Scan() 来扫描将记录的值赋值给相应定义的变量。主要注意的是rows.Scan(id, name…) 是指向 id、name 变量的指针才能把记录中的值赋值给当前的变量。 package mainimport (fmtloggotest.com/test/src/common )func main() {// 获取数据库连接db : common.Conn()selectSql : select id,name,address,age from usersrows, err : db.Query(selectSql)if err ! nil {log.Fatal(err)}// 延迟关闭数据库连接defer db.Close()// 遍历结果, rows是数据库查询结果的迭代器Next()函数来判断是否下一条记录for rows.Next() {var id intvar name stringvar address stringvar age interr : rows.Scan(id, name, address, age)if err ! nil {log.Fatal(err)}fmt.Println(id:, id, name:, name, address:, address, age:, age)} }五、事务 下面示例中使用db.Begin()来开启事务本来要更新唐僧的地址为女儿国唐僧也对女儿国王动心了本来和女儿国王都说好了玉帝哥哥陪国王白头到老没头发如何白头到老但是贫僧有要事在身不得不离开所以即便更新成功了也得通过tx.Rollback()回滚回去。 package mainimport (fmtloggotest.com/test/src/common )func main() {// 获取数据库连接db : common.Conn()if db ! nil {defer db.Close()// 开启事务tx, beginErr : db.Begin()if beginErr ! nil {log.Fatal(beginErr)}// 更新唐僧的地址不再是东土大唐留在了女儿国// 注意这里要用事务 tx.Exec() 来执行操作updateSql : update users set address ? where id ?result, updateErr : db.Exec(updateSql, 女儿国, 2)count, _ : result.RowsAffected()// 如果影响行数大于 0if count 0 {// 唐僧有使命在身怎能为了儿女私情误了朕的大事tx.Rollback()fmt.Println(唐僧最终离开了女儿国)return}if updateErr ! nil {log.Fatal(updateErr)// 更新操作发生异常事务回滚tx.Rollback()}// 提交事务commitErr : tx.Commit()if commitErr ! nil {log.Fatal(commitErr)fmt.Println(更新提交失败)}fmt.Println(更新成功)} else {fmt.Println(获取数据库连接失败)} } 运行前数据库记录如下 运行结果如下 可以看到更新条数是 1说明更新成功了 PS D:\workspaceGo\src\database go run .\updateTest.go 更新条数 1 唐僧最终离开了女儿国 2023/08/19 21:29:26 sql: transaction has already been committed or rolled back exit status 1运行后数据库记录如下 注意在使用 tx, beginErr : db.Begin()开启事务后需要用 tx.Exec()来执行更新操作这样后续的tx.Rollback()和tx.Commit()操作才会生效。刚开始我就使用了db.Exec()来执行的更新操作结果回滚就不生效才发现犯了这等低级错误… 六、总结 此篇只对 Go 语言操作数据库进行简单的 CRUD 操作的示例就像 JAVA 中用 JDBC 查库那样的基础操作可发现基本就是通过获取的数据库链接通过函数进行对SQL的执行操作。 那 Go 操作 MySQL 有哪些优势呢 高性能Go 语言本身的设计目标就是高性能所以也能够获得高性能的表现。并发支持Go 语言天生支持并发可以轻松的实现并发的数据库操作更加适合高并发的操作。直接访问数据库Go 语言通过标准库database/sql对SQL数据库直接访问的接口允许直接操作数据库。 有哪些缺点呢 生态系统相对较新相对于其他语言Go 语言在社区和工具等相对较新不是很全面。ORM 支持有限Go 语言的 ORM对象关系映射相对与其他语言成熟度较低需要手动编写SQL更多。 第三方开源库用于操作 MySQL 数据库 database/sqlGo 语言标准库提供了database/sql包支持多种数据库的操作。它提供了通用的接口的方法让你能够进行基本的数据库操作。github.com/go-sql-driver/mysql这是一个 MySQL 驱动对 MySQL 数据库进行操作。github.com/jinzhu/gormGORM 是 Go 语言中一个流行的 ORM 框架它 提供了对数据库的高级抽象支持多种数据库。它可以简化数据库的操作但是性能上有些损耗。github.com/go-xorm/xormXORM 是一个流行的 ORM 框架它提供了对多种数据库的支持。它有一些独特的特性适用于一些特定的场景。github.com/jmoiron/sqlx SQLx 是 database/sql 的扩展提供更方便的数据库操作方法。
http://www.zqtcl.cn/news/468491/

相关文章:

  • 网站专题优化电子商务网站运营方案
  • 唐山建网站公司湖南网站制作电话
  • 做神马网站优化合肥城乡建设局官网
  • 网站开发与管理心得体会建设高流量网站
  • 网站安全建设的重要性减粘装置设备设计要点
  • 建设一个网站的所有代码Django和wordpress速度
  • 临沂市建设局网站公示php建站系统
  • 有哪些好的做问卷调查的网站好学的专业是编课 网站开发英语翻译
  • 个人网站免费推广广饶网站制作
  • 怎么检测网站是否安全拍卖网站开发
  • 沂源网站制作自建网站的流程
  • 网站关键词收录查询网站最好服务器
  • 做百度移动网站优网站建设类论文选题
  • 自己做的网站怎样让百度搜到长沙专业外贸建站公司
  • 上海缔客网站建设公司网站策划书内容不包括什么
  • 找团队做网站网站建设 通知
  • 网站标题上的小图标怎么做的霞浦建设局网站
  • 国外那些网站做展厅比较好vp代理商网站管理系统
  • 广州最大网站建设wordpress数字超市
  • 怎么提高网站seo优化关键字排名wordpress媒体库搜索
  • 伊春网站制作怎么做视频网站赚钱吗
  • 前端网站开发邹城住房城乡建设部网站
  • 淘宝u站怎么做网站的网站建设费 科研 类
  • 代点任意广告链接网站怎样做才能让百度搜到网站产品
  • 宿迁网站搭建南宁建设局
  • app官网入口昆明排名优化
  • 新乡网站建设开发wordpress如何添加一个文章列表页
  • 中国3大做外贸的网站seo建站营销
  • 建站免费加盟高台县建设局网站
  • 网站联盟推广江门提供网站制作平台