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

网站后台怎么给图片做水印网上做公益的网站

网站后台怎么给图片做水印,网上做公益的网站,嘉兴 网站制作,电子商务网站开发价格目录 准备工作准备数据创建项目连接数据库查询数据修改数据插入数据删除数据释放资源完整代码最终执行结果 准备工作 在开始之前#xff0c;你需要确保自己安装了Golang的编程环境#xff0c;安装MySQL数据库#xff0c;有一个可以用于编写代码的编辑器或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/sqlerrorsfmtgithub.com/go-sql-driver/mysqllog )终端输入以下命令下载上面代码中引入的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 Thompsons,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/sqlerrorsfmtgithub.com/go-sql-driver/mysqllog )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 Thompsons,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://www.w-s-a.com/news/49584/

相关文章:

  • 网站建设实训记录企业网站建设运营
  • 视频网站文案住房和城乡建设部门
  • 汕头网站排名推广新余门户网站开发
  • 湖南智能网站建设哪家好wordpressμ
  • 公司网站备案必须是企业信息么睢宁县凌城做网站的
  • 上海网站建设公司 珍岛宁波免费自助建站模板
  • 南昌知名的网站建设公司南京网站开发选南京乐识赞
  • 外贸网站建设 深圳seo怎么提升关键词的排名
  • 网站推广效果的评价google关键词
  • 模板网站建站哪家好做微信充值网站
  • 抽奖的网站怎么做的广州小程序定制开发
  • 网站的文件夹建设企业网站公积金
  • 做网站的的价位网站建设 考试题目
  • 深圳比邻网站建设北京优化服务
  • 菏泽网站建设哪家好电子商务网络安全
  • 仿一个网站广州网站建设正规公司
  • 网站建设 目的seo网站关键词排名快速
  • 什么叫做响应式网站自媒体全平台发布
  • 企业网站 案例哪里需要人做钓鱼网站
  • 厚街东莞网站建设网站开发者调试模式
  • 网站推广营销联系方式wordpress adminlte
  • 哪些网站可以做文字链广告卖水果网站建设的策划书
  • 雕刻业务网站怎么做企业qq官网
  • 新华书店的做的数字阅读网站wordpress编辑器格式
  • jq做6个网站做什么好广西临桂建设局网站
  • 网站新闻图片尺寸南京网站设计公司
  • 重庆seo建站网站服务器 安全
  • 咸宁做网站的公司桂林网站建设兼职
  • 教做网站网站开发行业分析
  • 忻州网站建设培训友情链接交换形式有哪些