golang实现对mysql数据库的操作

binghunwangcong · · 3699 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

一、创建表格

marksql := "create table mark (id int(20) primary key auto_increment,markname char(50)," +
		"mlongitude float,mlatitude float,mdescribe char(255),mtype int,creattime char(50),mvalue float );"
smt, err := db.Db.Prepare(marksql)
checkErr(err)
smt.Exec()

二、创建外键

//定义好友fk1外键
	idx_userid := "alter table user add index idx_userid(uid);"
	smt, err = db.Db.Prepare(idx_userid)
	checkErr(err)
	smt.Exec()

	idx_userid = "alter table friend add index idx_friuid(uid);"
	smt, err = db.Db.Prepare(idx_userid)
	checkErr(err)
	smt.Exec()
//定义好友fk2外键
	frifk2sql := "alter table friend add constraint fk2_fri_user foreign key(uid) references user(uid);"
	smt, err = db.Db.Prepare(frifk2sql)
	checkErr(err)
	smt.Exec()

三、插入数据

//插入到数据库表中
func (db *DbOperation) Insert2Table(str string) bool {

	stmt, err := db.Db.Prepare(str)
	checkErr(err)
	res, err := stmt.Exec()
	defer stmt.Close()

	checkErr(err)
	i, err := res.RowsAffected()
	if i > 0 && err == nil {
		return true
	} else {
		return false
	}

}

var sql = "insert into user(uid,ucode,unickname,password,ufavicon,utel,utype,udescribe,ucreattime) values (" + strconv.Itoa(user.Id) + ",'" + user.Code + "','" + user.NickName + "','" + user.Password + "','" + user.Img + "','" + user.Mobile + "'," + strconv.FormatFloat(user.Category, 'e', 10, 64) + ",'" + user.Description + "','" + user.CreateTime + "');"

		if !db.G_db.Insert2Table(sql) {
			fmt.Println("user表插入不成功!")
		} else {
			fmt.Println("entering weite2db OK ! ! !")
		}

四、更新数据库

var sql = "update user set ufavicon='" + user.Img +
		"',udescribe='" + user.Description +
		"',utype=" + strconv.FormatFloat(user.Category, 'e', 10, 64) + " where uid=" + strconv.Itoa(user.Id) + ";"
	if !db.G_db.Insert2Table(sql) {
		fmt.Println("user表更新不成功!")
		return errors.New("update error!!!")
	}

五、查找数据库

func (db *DbOperation) Find(str string) *sql.Rows {
	fmt.Println(str)
	rows, err := db.Db.Query(str)
	fmt.Println("--------------------err", err)
	if err != nil {
		panic("error in: selecting in table")
	}
	//rows.Close()

	return rows
}

func (pUsersSet *UserSet) LoadData(pDb *db.DbOperation) {
	var user User
	fmt.Println("begining:load userset........")
	selectstr := "select uid,ucode,unickname,password,ufavicon,utel,utype,udescribe,ucreattime from user"
	rows := pDb.Find(selectstr)

	for rows.Next() {
		err := rows.Scan(&user.Id, &user.Code, &user.NickName, &user.Password, &user.Img, &user.Mobile, &user.Category, &user.Description, &user.CreateTime)

		if err != nil {
			panic("error in:scanning the table user")
		}

		fmt.Println("-------------------Load data to cache--------------------")
		fmt.Println(user)
		pUsersSet.WriteUserFromDb2Cache(user)
	}
}



有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:binghunwangcong

查看原文:golang实现对mysql数据库的操作

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3699 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传