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

南海网站建设价格怎么优化百度关键词

南海网站建设价格,怎么优化百度关键词,手机网站跟pc网站有什么不同,我理解的网络营销是什么golang中类似java操作mysql的jdbc一样,github.com/go-sql-driver/mysql也为go提供了基础接口,在开发中往往需要写更多的代码来满足自己的定制需求,java在驱动基础上有了扩展,orm框架诞生,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/sql""fmt""log""time"_ "github.com/go-sql-driver/mysql"
)//  用户表结构体
type User struct {id       int64  `db:"id"`name     string `db:"name"`password string `db:"password"`age      int    `db:"age"`
}var MysqlDb *sql.DB
var MysqlDbErr errorconst (USER_NAME = "root"PASS_WORD = "fbw123"HOST      = "localhost"PORT      = "3307"DATABASE  = "node"CHARSET   = "utf8"
)func linksql() {dbDSN := fmt.Sprintf("%s:%s@tcp(%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.shuangfujiaoyu.com/news/32300.html

相关文章:

  • 局网站建设情况汇报罗湖区seo排名
  • web网站开发步骤宁波网站推广排名
  • 网站做推广需要什么品牌营销推广方案怎么做
  • 做徒步网站怎么样百度seo优化方案
  • 辽宁城建设计院有限公司网站汕头网站建设方案优化
  • 医疗行业网站策划公司网页制作流程
  • 万网董事长是谁网站seo收录工具
  • 网站建设和网站长沙关键词优化新报价
  • 宁波网红打卡地seo关键词推广渠道
  • 网页设计需要什么书seo系统源码
  • 南阳市建设局网站欧美网站建设
  • 伪静态 网站seo双标题软件
  • 龙岗网站-建设深圳信科在线培训app
  • 钦州网站建百度关键词快排
  • 全部浏览器下载大全南昌搜索引擎优化
  • 有什么网站是做名片印刷的商丘网络推广公司
  • 七台河新闻综合青岛网站优化公司哪家好
  • 易搜网站建设媒体邀约
  • 怎样做禁毒网站的试卷营销型网站制作企业
  • 浅蓝色.net企业网站源码带后台百度软文推广怎么做
  • 网站建设需求模板下载前端开发培训机构推荐
  • 广州建设监理协会网站3步打造seo推广方案
  • 网络工程专业毕业生设计武汉seo公司
  • java cms做网站百度主页面
  • 国家反诈中心app下载流程岳阳seo快速排名
  • wordpress db cache优化师是一份怎样的工作
  • 国外优秀网页设计欣赏关键词自动优化
  • 网站的优化与网站建设有关吗play商店
  • 珠海网站建设运营公司长沙seo服务
  • 做响应式网站价格网站推广app