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

微信商城网站模板自己做的网站怎么发布视频教程

微信商城网站模板,自己做的网站怎么发布视频教程,提供网站建设课程,做网站的文件golang中类似java操作mysql的jdbc一样#xff0c;github.com/go-sql-driver/mysql也为go提供了基础接口#xff0c;在开发中往往需要写更多的代码来满足自己的定制需求#xff0c;java在驱动基础上有了扩展#xff0c;orm框架诞生#xff0c;mybatis、jpa等都是好用的扩展…golang中类似java操作mysql的jdbc一样github.com/go-sql-driver/mysql也为go提供了基础接口在开发中往往需要写更多的代码来满足自己的定制需求java在驱动基础上有了扩展orm框架诞生mybatis、jpa等都是好用的扩展框架go也不例外除了知道基础框架的实现和使用外其他的orm框架也要轻松上手知道他们怎么在基础之上实现的是否自己实现一套框架go中的mysql框架比较多这意味着基础框架github.com/go-sql-driver/mysql做的相当优秀上层可以i灵活且自由的实现我们这次主要是复习基础驱动的使用如下 package mainimport (database/sqlfmtlogtime_ github.com/go-sql-driver/mysql )// 用户表结构体 type User struct {id int64 db:idname string db:namepassword string db:passwordage int db:age }var MysqlDb *sql.DB var MysqlDbErr errorconst (USER_NAME rootPASS_WORD fbw123HOST localhostPORT 3307DATABASE nodeCHARSET utf8 )func linksql() {dbDSN : fmt.Sprintf(%s:%stcp(%s:%s)/%s?charset%s, USER_NAME, PASS_WORD, HOST, PORT, DATABASE, CHARSET)// 打开连接失败MysqlDb, MysqlDbErr sql.Open(mysql, dbDSN)//defer MysqlDb.Close();if MysqlDbErr ! nil {log.Println(dbDSN: dbDSN)panic(数据源配置不正确: MysqlDbErr.Error())}// 最大连接数MysqlDb.SetMaxOpenConns(100)// 闲置连接数MysqlDb.SetMaxIdleConns(20)// 最大连接周期MysqlDb.SetConnMaxLifetime(100 * time.Second)if MysqlDbErr MysqlDb.Ping(); nil ! MysqlDbErr {panic(数据库链接失败: MysqlDbErr.Error())} else {fmt.Println(数据库连接成功)} }// 查询数据指定字段名---完成 func StructQueryField(id int64) {user : new(User)row : MysqlDb.QueryRow(select id, name, age,password from user where id?, id)if err : row.Scan(user.id, user.name, user.age, user.password); err ! nil {fmt.Printf(scan failed, err:%v, err)fmt.Println(查询失败)return}fmt.Println(user.id, user.name, user.age, user.password) }// 查询数据取所有字段-----完成 func StructQueryAllField() {// 通过切片存储users : make([]User, 0)//分页查询一次查询2个记录rows, _ : MysqlDb.Query(SELECT * FROM user limit ?, 2)// 遍历var user Userfor rows.Next() {rows.Scan(user.id, user.name, user.age, user.password)users append(users, user)}fmt.Println(users)}// 插入数据-----完成 func StructInsert(id int, name string, age int8, password string) {ret, _ : MysqlDb.Exec(insert INTO user(id,name,age,password) values(?,?,?,?), id, name, age, password)//插入数据的主键idlastInsertID, _ : ret.LastInsertId()fmt.Println(LastInsertID:, lastInsertID)//影响行数rowsaffected, _ : ret.RowsAffected()fmt.Println(RowsAffected:, rowsaffected)}// 更新数据 -------完成 func StructUpdate(id int64, name string, password string, age int8) {ret, _ : MysqlDb.Exec(UPDATE user set name?,password?,age? where id?, name, password, age, id)upd_nums, _ : ret.RowsAffected()fmt.Println(RowsAffected:, upd_nums) }// 删除数据------完成 func StructDeluserByid(id uint64) {ret, _ : MysqlDb.Exec(delete from user where id?, id)del_nums, _ : ret.RowsAffected()fmt.Println(RowsAffected:, del_nums) }// 事务处理,结合预处理----完成 func StructTx() {//事务处理前面的插入代码没有什么问题在后面的条件不满足下事务回滚tx, _ : MysqlDb.Begin()// 新增userAddPre, _ : MysqlDb.Prepare(insert into user(name,password,age) values(?, ?,?))addRet, _ : userAddPre.Exec(zhaoliu, mima, 12)ins_nums, _ : addRet.RowsAffected()// 更新userUpdatePre1, _ : tx.Exec(update user set name zhansan where name?, 张三)upd_nums1, _ : userUpdatePre1.RowsAffected()userUpdatePre2, _ : tx.Exec(update user set name lisi where name?, 李四)upd_nums2, _ : userUpdatePre2.RowsAffected()fmt.Println(ins_nums)fmt.Println(upd_nums1)fmt.Println(upd_nums2)if ins_nums 0 upd_nums1 0 upd_nums2 0 {tx.Commit()} else {tx.Rollback()}}// 查询数据指定字段名,不采用结构体 ------完成 func RawQueryField() {rows, _ : MysqlDb.Query(select id,name from user)if rows nil {return}id : 0name : fmt.Println(rows)for rows.Next() {rows.Scan(id, name)fmt.Println(id, name)} }// 查询数据,取所有字段,不采用结构体------完成 func RawQueryAllField() {//查询数据取所有字段rows2, _ : MysqlDb.Query(select * from user)//返回所有列cols, _ : rows2.Columns()//这里表示一行所有列的值用[]byte表示vals : make([][]byte, len(cols))//这里表示一行填充数据scans : make([]interface{}, len(cols))//这里scans引用vals把数据填充到[]byte里for k, _ : range vals {scans[k] vals[k]}i : 0result : make(map[int]map[string]string)for rows2.Next() {//填充数据rows2.Scan(scans...)//每行数据row : make(map[string]string)//把vals中的数据复制到row中for k, v : range vals {key : cols[k]//这里把[]byte数据转成stringrow[key] string(v)}//放入结果集result[i] rowi}fmt.Println(result)for k, v : range result {fmt.Println(k, v)//每条属性打一遍for k, p : range v {fmt.Println(k, p)}} }func main() {linksql()// StructQueryField(2020110131)// StructInsert(100,lv,23 wenli)// StructQueryAllField()// StructUpdate(100,少年,wjr,20)// StructDeluserByid(100)// StructTx()//查询所有的数据显示指定字段// RawQueryField()RawQueryAllField() }
http://www.hkea.cn/news/14342088/

相关文章:

  • 服务流程企业网站成立网站的意义
  • 佛山网站设计多少钱新手学网站建设
  • 高端网站建设熊掌号云南旅游攻略6天5晚多少钱
  • 东莞企业网站多少钱可编辑wordpress主题
  • 免费的十大免费货源网站建设局电话号码
  • 书画工作室网站模板网站建设wordpress下拉
  • 长安网站建设wordpress 加载时间
  • 建立个人免费网站python语言特点是什么
  • 淘宝优惠劵做网站模版app网站开发成功案例
  • 网站首页制作的过程宝安营销型网站建设公司
  • 怎么开公众号上海排名seo公司
  • 深圳外贸建站搭建哪家好多用户网上商城
  • 网站建设时间表石家庄
  • 网站推广优化方法微信公众号登录二维码
  • 广州网站建设服务商投资公司怎么运作
  • 成都网站建设公司创新互联建立个人网站的费用
  • php学校网站建设辽宁沈阳今天消息
  • wordpress主题W3C杭州seo首页优化软件
  • 物流营销型网站案例分析mvc5 网站开发美學 pdf
  • 网络营销的企业网站全国电商排名前20名
  • 晋江论坛怎么搜索seo教学网seo
  • 网站建设中间件收费在线字体设计网站
  • 租号网站开发小程序登录失败是什么原因
  • 网站展示型和营销型有什么区别设计师培训班怎么样
  • 再网站里做商家店铺thesis wordpress
  • 网站怎么维护wordpress做音乐网插件吗
  • 网站开发分前台后台医药网站建设公司
  • 电子商务网站建设 第二版免费seo提交工具
  • 个人备案的网站可以做商城成都网站海口网站建设
  • 怎么建立企业网站扁平风格网站 模板免费下载