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

怎么查看网站有没有备案自己怎么注册网站

怎么查看网站有没有备案,自己怎么注册网站,电脑系统优化软件哪个好用,足球最新比赛消息目录 准备工作准备数据创建项目连接数据库查询数据修改数据插入数据删除数据释放资源完整代码最终执行结果 准备工作 在开始之前,你需要确保自己安装了Golang的编程环境,安装MySQL数据库,有一个可以用于编写代码的编辑器或IDE工具。我在这里…

目录

  • 准备工作
  • 准备数据
  • 创建项目
  • 连接数据库
  • 查询数据
  • 修改数据
  • 插入数据
  • 删除数据
  • 释放资源
  • 完整代码
  • 最终执行结果

准备工作

在开始之前,你需要确保自己安装了Golang的编程环境,安装MySQL数据库,有一个可以用于编写代码的编辑器或IDE工具。我在这里使用的编辑器是Fleet。

准备数据

将下面的SQL语句在MySQL中执行,创建数据库并插入数据.。

drop table if exists album;
create table album (id int auto_increment not null,title varchar(128) not null,artist varchar(255) not null,price decimal(5,2) not null,primary key (`id`)
);
insert into album(title, artist, price)
values('Blue Train', 'John Coltrane', 56.99),('Giant Steps', 'Greey Mulligan', 63.99),('Jeru', 'Gerry Mulligan', 17.99),('Sarah Vaughan', 'Sarah Vaughan', 34.98);

创建项目

进入终端,输入以下命令。(当然,你也可以手动创建)

mkdir data-access
cd ./data-access
go mod init example/data-access

在上面创建的目录下创建文件main.go,将以下代码粘贴到文件中。

package mainimport ("database/sql""errors""fmt""github.com/go-sql-driver/mysql""log"
)

终端输入以下命令下载上面代码中引入的MySQL的驱动包

go mod tidy

连接数据库

在main.go中输入以下代码,连接数据库。

var db *sql.DBfunc main() {// 设置连接属性cfg := mysql.Config{User:   "root",Passwd: "123456",Net:    "tcp",Addr:   "127.0.0.1:3306",DBName: "recordings",}// 获取数据库句柄var err errordb, err = sql.Open("mysql", cfg.FormatDSN())if err != nil {log.Fatal(err)}// 测试是否连接成功pingErr := db.Ping()if pingErr != nil {log.Fatal(pingErr)}log.Println("Connected!")
}

查询数据

对于数据库中的数据,我们需要定义一个结构体去接收。在main.go中输入以下代码。

// Album 记录实体结构体
type Album struct {ID     int64Title  stringArtist stringPrice  float32
}

接着我们实现String函数让输出稍微美观一些。

func (album Album) String() string {return fmt.Sprintf(`{ "id": %d, "title": %q, "artist": %q, "price": %.2f }`, album.ID, album.Title, album.Artist, album.Price)
}

接下来,让我们编写一个函数,这个函数的功能是通过人名去查询数据库中的记录。

// 通过人名查询记录
func albumsByArtist(name string) ([]Album, error) {var albums []Albumrows, err := db.Query("select * from album where artist = ?", name)if err != nil {return nil, fmt.Errorf("albumsByArtist %q: %v", name, err)}// 资源释放,defer关键字修饰的语句在其下方语句未执行完成前不会执行defer rows.Close()// 循环获取相关值for rows.Next() {var alb Albumif err := rows.Scan(&alb.ID, &alb.Title, &alb.Artist, &alb.Price); err != nil {return nil, fmt.Errorf("albumsByArtist %q: %v", name, err)}albums = append(albums, alb)}if err := rows.Err(); err != nil {return nil, fmt.Errorf("albumsByArtist %q: %v", name, err)}return albums, nil
}

接着定义一个函数,通过id去查询记录。

// 通过ID查询记录
func albumsById(id int64) (Album, error) {var alb Albumrow := db.QueryRow("select * from album where id = ?", id)if err := row.Scan(&alb.ID, &alb.Title, &alb.Artist, &alb.Price); err != nil {if errors.Is(err, sql.ErrNoRows) {return alb, fmt.Errorf("albumsById %d: no such album", id)}return alb, fmt.Errorf("albumsById %d: %v", id, err)}return alb, nil
}

然后,我们在main函数中调用。

// 查询数据
albums, err := albumsByArtist("John Coltrane")
if err != nil {log.Fatal(err)
}
log.Printf("Albums found: %v\n", albums)alb, err := albumsById(2)
if err != nil {log.Fatal(err)
}
log.Printf("Album found: %v\n", alb)

修改数据

我们来定义一个函数用来修改数据,用id做为删选条件。

// 修改数据
func updateAlbumById(alb Album) (int64, error) {result, err := db.Exec("update album set title = ?, artist = ?, price = ? where id = ?", alb.Title, alb.Artist, alb.Price, alb.ID)if err != nil {return 0, fmt.Errorf("updateAlbumById: %v", err)}rows, err := result.RowsAffected()if err != nil {return 0, fmt.Errorf("updateAlbumById: %v", err)}return rows, nil
}

在main函数中调用它。

// 修改数据
updateRows, err := updateAlbumById(Album{ID: 1,Title: "White teddy bear",Artist: "John Thompson's",Price: 20.99,
})
if err != nil {log.Fatal(err)
}
log.Printf("Number of rows updated: %v\n", updateRows)

插入数据

定义一个函数用来插入数据并且返回插入数据在数据库中的id。

// 插入记录
func addAlbum(alb Album) (int64, error) {result, err := db.Exec("insert into album (title, artist, price) values (?, ?, ?)", alb.Title, alb.Artist, alb.Price)if err != nil {return 0, fmt.Errorf("addAlbum: %v", err)}id, err := result.LastInsertId()if err != nil {return 0, fmt.Errorf("addAlbum: %v", err)}return id, nil
}

在main函数中调用

// 插入数据
albId, err := addAlbum(Album{Title: "The Modern Sound of Betty Carter",Artist: "Betty Carter",Price: 49.99,
})
if err != nil {log.Fatal(err)
}
log.Printf("id of added alnum: %v\n", albId)

删除数据

定义一个函数用来删除数据。

// 删除记录,返回删除的行数
func deleteAlbum(id int64) (int64, error) {result, err := db.Exec("delete from album where id = ?", id)if err != nil {return 0, fmt.Errorf("deleteAlbum: %v", err)}rows, err := result.RowsAffected()if err != nil {return 0, fmt.Errorf("deleteAlbum: %v", err)}return rows, nil
}

在main函数中调用

// 删除数据
deleteRows, err := deleteAlbum(albId)
if err != nil {log.Fatal(err)
}
log.Printf("Number of rows deleted: %v\n", deleteRows)

释放资源

对于数据库的操作完成后,需要释放数据库连接,在main函数中输入以下代码释放资源。

// 释放资源
err = db.Close()
if err != nil {log.Fatal(err)
}

完整代码

完整代码如下。

package mainimport ("database/sql""errors""fmt""github.com/go-sql-driver/mysql""log"
)var db *sql.DB// Album 记录实体结构体
type Album struct {ID     int64Title  stringArtist stringPrice  float32
}func (album Album) String() string {return fmt.Sprintf(`{ "id": %d, "title": %q, "artist": %q, "price": %.2f }`, album.ID, album.Title, album.Artist, album.Price)
}func main() {// 设置连接属性cfg := mysql.Config{User:   "root",Passwd: "123456",Net:    "tcp",Addr:   "127.0.0.1:3306",DBName: "recordings",}// 获取数据库句柄var err errordb, err = sql.Open("mysql", cfg.FormatDSN())if err != nil {log.Fatal(err)}// 测试是否连接成功pingErr := db.Ping()if pingErr != nil {log.Fatal(pingErr)}log.Println("Connected!")// 查询数据albums, err := albumsByArtist("John Coltrane")if err != nil {log.Fatal(err)}log.Printf("Albums found: %v\n", albums)alb, err := albumsById(2)if err != nil {log.Fatal(err)}log.Printf("Album found: %v\n", alb)// 修改数据updateRows, err := updateAlbumById(Album{ID: 1,Title: "White teddy bear",Artist: "John Thompson's",Price: 20.99,})if err != nil {log.Fatal(err)}log.Printf("Number of rows updated: %v\n", updateRows)// 插入数据albId, err := addAlbum(Album{Title: "The Modern Sound of Betty Carter",Artist: "Betty Carter",Price: 49.99,})if err != nil {log.Fatal(err)}log.Printf("id of added alnum: %v\n", albId)// 删除数据deleteRows, err := deleteAlbum(albId)if err != nil {log.Fatal(err)}log.Printf("Number of rows deleted: %v\n", deleteRows)// 释放资源err = db.Close()if err != nil {log.Fatal(err)}
}// 通过人名查询记录
func albumsByArtist(name string) ([]Album, error) {var albums []Albumrows, err := db.Query("select * from album where artist = ?", name)if err != nil {return nil, fmt.Errorf("albumsByArtist %q: %v", name, err)}// 资源释放,defer关键字修饰的语句在其下方语句未执行完成前不会执行defer rows.Close()// 循环获取相关值for rows.Next() {var alb Albumif err := rows.Scan(&alb.ID, &alb.Title, &alb.Artist, &alb.Price); err != nil {return nil, fmt.Errorf("albumsByArtist %q: %v", name, err)}albums = append(albums, alb)}if err := rows.Err(); err != nil {return nil, fmt.Errorf("albumsByArtist %q: %v", name, err)}return albums, nil
}// 通过ID查询记录
func albumsById(id int64) (Album, error) {var alb Albumrow := db.QueryRow("select * from album where id = ?", id)if err := row.Scan(&alb.ID, &alb.Title, &alb.Artist, &alb.Price); err != nil {if errors.Is(err, sql.ErrNoRows) {return alb, fmt.Errorf("albumsById %d: no such album", id)}return alb, fmt.Errorf("albumsById %d: %v", id, err)}return alb, nil
}// 修改数据
func updateAlbumById(alb Album) (int64, error) {result, err := db.Exec("update album set title = ?, artist = ?, price = ? where id = ?", alb.Title, alb.Artist, alb.Price, alb.ID)if err != nil {return 0, fmt.Errorf("updateAlbumById: %v", err)}rows, err := result.RowsAffected()if err != nil {return 0, fmt.Errorf("updateAlbumById: %v", err)}return rows, nil
}// 插入记录
func addAlbum(alb Album) (int64, error) {result, err := db.Exec("insert into album (title, artist, price) values (?, ?, ?)", alb.Title, alb.Artist, alb.Price)if err != nil {return 0, fmt.Errorf("addAlbum: %v", err)}id, err := result.LastInsertId()if err != nil {return 0, fmt.Errorf("addAlbum: %v", err)}return id, nil
}// 删除记录,返回删除的行数
func deleteAlbum(id int64) (int64, error) {result, err := db.Exec("delete from album where id = ?", id)if err != nil {return 0, fmt.Errorf("deleteAlbum: %v", err)}rows, err := result.RowsAffected()if err != nil {return 0, fmt.Errorf("deleteAlbum: %v", err)}return rows, nil
}

最终执行结果

在这里插入图片描述


文章转载自:
http://eyeminded.nrwr.cn
http://nidifugous.nrwr.cn
http://bigeneric.nrwr.cn
http://arles.nrwr.cn
http://acarine.nrwr.cn
http://khuzistan.nrwr.cn
http://spacesickness.nrwr.cn
http://fulmination.nrwr.cn
http://algebraist.nrwr.cn
http://hemofuscin.nrwr.cn
http://isodiaphere.nrwr.cn
http://distend.nrwr.cn
http://photophilic.nrwr.cn
http://folio.nrwr.cn
http://boehm.nrwr.cn
http://praedormital.nrwr.cn
http://hillocky.nrwr.cn
http://menostaxis.nrwr.cn
http://ineducation.nrwr.cn
http://costing.nrwr.cn
http://nascar.nrwr.cn
http://tubicolous.nrwr.cn
http://ecocide.nrwr.cn
http://rockford.nrwr.cn
http://oldster.nrwr.cn
http://complemented.nrwr.cn
http://nerved.nrwr.cn
http://shandite.nrwr.cn
http://phylloxanthin.nrwr.cn
http://butt.nrwr.cn
http://repositorium.nrwr.cn
http://thorax.nrwr.cn
http://dauber.nrwr.cn
http://juvenescent.nrwr.cn
http://cardinal.nrwr.cn
http://metatony.nrwr.cn
http://biologist.nrwr.cn
http://hirsutism.nrwr.cn
http://milliosmol.nrwr.cn
http://interpolymer.nrwr.cn
http://genealogical.nrwr.cn
http://pellagrous.nrwr.cn
http://inflect.nrwr.cn
http://seaport.nrwr.cn
http://proprietariat.nrwr.cn
http://undissembled.nrwr.cn
http://moistify.nrwr.cn
http://mira.nrwr.cn
http://zirconolite.nrwr.cn
http://mammie.nrwr.cn
http://disintegrative.nrwr.cn
http://babbler.nrwr.cn
http://scriptwriter.nrwr.cn
http://pomelo.nrwr.cn
http://tafoni.nrwr.cn
http://electrocapillarity.nrwr.cn
http://hexaplarian.nrwr.cn
http://oceanographical.nrwr.cn
http://castration.nrwr.cn
http://uncivil.nrwr.cn
http://fatidical.nrwr.cn
http://osmundine.nrwr.cn
http://smaragd.nrwr.cn
http://salicylaldehyde.nrwr.cn
http://mangy.nrwr.cn
http://musaceous.nrwr.cn
http://voces.nrwr.cn
http://polymorphonuclear.nrwr.cn
http://astoundment.nrwr.cn
http://wilhelmshaven.nrwr.cn
http://defluent.nrwr.cn
http://dithered.nrwr.cn
http://illusory.nrwr.cn
http://comex.nrwr.cn
http://oblation.nrwr.cn
http://philabeg.nrwr.cn
http://occultation.nrwr.cn
http://stripteaser.nrwr.cn
http://sild.nrwr.cn
http://aphyllous.nrwr.cn
http://awshucks.nrwr.cn
http://vibrant.nrwr.cn
http://paratonic.nrwr.cn
http://counterdeclaration.nrwr.cn
http://learner.nrwr.cn
http://meritorious.nrwr.cn
http://centuplicate.nrwr.cn
http://beadswoman.nrwr.cn
http://biologist.nrwr.cn
http://wv.nrwr.cn
http://seppuku.nrwr.cn
http://dowry.nrwr.cn
http://ureteritis.nrwr.cn
http://hidden.nrwr.cn
http://incurvation.nrwr.cn
http://butane.nrwr.cn
http://rejoinder.nrwr.cn
http://manus.nrwr.cn
http://fiscality.nrwr.cn
http://squelch.nrwr.cn
http://www.dt0577.cn/news/79725.html

相关文章:

  • 凉州区住房和城乡建设局网站长沙seo优化报价
  • 杭州网站建设推荐廊坊seo管理
  • 网站前端交互功能案例分析付费推广
  • 网站建设与管理案例教程教学大纲软文案例
  • 运输网站建设产品如何推广
  • wpf入可以做网站吗百度人工服务热线24小时
  • 旅游网站自己怎么做网络零售的优势有哪些
  • 北京考试学院网站首页企业网站优化
  • Wordpress 外链图片6seo基础教程使用
  • 有什么外贸网站网络营销课程大概学什么内容
  • 保险网站程序源码百度的网页地址
  • 淘宝联盟的网站怎么做的网络营销成功案例分析
  • 优秀高端网站建设报价打广告在哪里打最有效
  • 做网站都是用ps吗seo职业规划
  • 网站建设教程免费佛山百度快速排名优化
  • 做神马网站优化排名游戏推广论坛
  • cms怎么搭建网站无锡百度推广平台
  • iis 编辑网站绑定企业培训课程推荐
  • 河北网站搜索排名优化方案广州seo公司排行
  • 那家b2c网站建设报价seo的主要分析工具
  • 水网站源码站长工具seo综合查询怎么用
  • 好网站建设公司报价西安百度seo
  • wordpress中css类seo定义
  • 礼品网站商城怎么做网络营销方式有几种
  • 纪检监察网站建设的意义微信营销的功能
  • 手机网站的文本排版是怎么做的网站开发技术
  • 如何做泰国网站成都达洱狐网络科技有限公司
  • 网站前台登陆页面怎么改短视频seo询盘系统
  • 网站建设 怎样找客户中国站长之家
  • 用excel做网站4414站长平台