1. 程式人生 > >go服務端----mysql簡單示例

go服務端----mysql簡單示例

mysql簡單示例

趁現在公司的事情沒那麼多,多寫幾篇吧,雖然都比較基礎,但是寫了總比不寫好。
mysql大家應該都瞭解,一款非常流行的開源關係資料庫應用,而go語言中mysql的庫不是很多,其中使用的人最多的應該就是go-sql-driver/mysql了吧,我的專案中同樣也用了這個庫,同樣貼出它的github倉庫地址
go-sql-driver/mysql
下面貼一下用go-sql-driver/mysql操作資料庫的簡單例子的程式碼,非常基礎,直接看註釋就好。

package main

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
) func main() { //db配置資訊 user := "root" psw := "jiandanmima" host := "localhost" port := 3306 dbname := "testdb" charset := "utf8" config := fmt.Sprintf("%s:%[email protected](%s:%d)/%s?charset=%s", user, psw, host, port, dbname, charset) //連線資料庫,獲取連線例項 db, err := sql.Open("mysql"
, config) if err != nil { fmt.Println("open db error", err) } //設定最大閒置連線和最大開啟連線,具體數值按需指定 db.SetMaxIdleConns(32) db.SetMaxOpenConns(32) //增刪改查操作 err = Insert(db, "劉小明", "男", 18) if err != nil { fmt.Println("insert err", err) } err = Delete(db, 1) if
err != nil { fmt.Println("delete err", err) } err = Update(db, 2, 22) if err != nil { fmt.Println("update err", err) } err = Select(db, 3) if err != nil { fmt.Println("select err", err) } err = SelectAll(db) if err != nil { fmt.Println("select all err", err) } } //增 func Insert(db *sql.DB, name string, sex string, age int) error { sen := "INSERT INTO people(name, sex, age) VALUES (?, ?, ?)" stmt, err := db.Prepare(sen) if err != nil { return err } defer stmt.Close() //預處理記得關閉連線,使用defer在函式return前關閉 rst, err := stmt.Exec(name, sex, age) if err != nil { return err } lastId, err := rst.LastInsertId() if err != nil { return err } fmt.Printf("last insert id %d.\n", lastId) return nil } //刪 func Delete(db *sql.DB, id int) error { sen := "DELETE FROM people WHERE id = ?" stmt, err := db.Prepare(sen) if err != nil { return err } defer stmt.Close() rst, err := stmt.Exec(id) if err != nil { return err } rowsAffected, err := rst.RowsAffected() if err != nil { return err } fmt.Printf("%d records has been deleted.\n", rowsAffected) return nil } //改 func Update(db *sql.DB, id int, age int) error { sen := "UPDATE people SET age = ? WHERE id = ?" stmt, err := db.Prepare(sen) if err != nil { return err } defer stmt.Close() rst, err := stmt.Exec(age, id) if err != nil { return err } rowsAffected, err := rst.RowsAffected() if err != nil { return err } fmt.Printf("%d records has been updated.\n", rowsAffected) return nil } //查 func Select(db *sql.DB, id int) error { sen := "SELECT name, sex, age FROM people WHERE id = ?" stmt, err := db.Prepare(sen) if err != nil { return err } defer stmt.Close() row := stmt.QueryRow(id) var name, sex string var age int row.Scan(&name, &sex, &age) fmt.Printf("the information of id %d: name = '%s', sex = '%s', age = %d.\n", id, name, sex, age) return nil } //查詢多條記錄 func SelectAll(db *sql.DB) error { sen := "SELECT id, name, sex, age FROM people ORDER BY id" stmt, err := db.Prepare(sen) if err != nil { return err } defer stmt.Close() rows, err := stmt.Query() if err != nil { return err } defer rows.Close() //查詢多條記錄的rows介面卡也需要及時關閉 fmt.Println("all information of table people:") fmt.Println("id name sex age") for rows.Next() { var id, age int var name, sex string rows.Scan(&id, &name, &sex, &age) fmt.Printf("%d %s %s %d\n", id, name, sex, age) } return nil }

程式執行前的資料表資料
這裡寫圖片描述

程式執行的輸出結果
這裡寫圖片描述

最後附上資料表建立和資料插入語句

CREATE TABLE `people` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增id',
  `name` varchar(255) NOT NULL DEFAULT '' COMMENT '姓名',
  `sex` varchar(8) NOT NULL DEFAULT '男' COMMENT '性別',
  `age` int(11) NOT NULL DEFAULT '0' COMMENT '年齡',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into people(name, sex, age) values('張全蛋', '男' , 18), ('趙鐵根', '男', 19), ('李小花', '女', 20), ('王尼瑪', '男', 36);

golang簡單的mysql操作就在這了。

相關推薦

go服務----mysql簡單示例

mysql簡單示例 趁現在公司的事情沒那麼多,多寫幾篇吧,雖然都比較基礎,但是寫了總比不寫好。 mysql大家應該都瞭解,一款非常流行的開源關係資料庫應用,而go語言中mysql的庫不是很多,其中使用的人最多的應該就是go-sql-driver/mysql了

TCP客戶圖片上傳服務儲存本地示例

//TCP客戶端public class TCPClient { public static void main(String[] args)throws IOException { Socket socket = new Socket("127.0.0.1",8888)

Android之提交資料到服務方法簡單封裝

在Android應用中,除了單機版的應用,其餘的應用免不了需要頻繁地與服務端進行資料互動,如果每一種方法都獨立寫一段程式碼,那會造成程式碼大量重複,冗餘,這不是我們所希望的,所以我們可以對其進行一些封裝,這樣不但可以提高程式碼質量,最重要的是我們自己用起來也爽啊。 首先,我們先建立個webservice資料

android與服務websocket通訊示例

服務端庫依賴詳見章末 spring websocket服務端程式碼(會話過程) public class HandshakeInterceptor extends HttpSessionHandshakeInterceptor { priva

2、netty3服務入門程式碼示例

package com.server; import java.net.InetSocketAddress; import java.util.concurrent.ExecutorService; import java.util.concurrent.Ex

NIO學習之Selector,SelectionKey與客戶服務通訊簡單實現(1)

選擇器(Selector)的 作用:將通道感興趣的事件放入佇列中,而不是馬上提交給應用程式,等已註冊的通道自己來請求處理這些事件。換句話說,就是選擇器將會隨時報告已經準備好了的通道,而且是按照先進先出的順序。 Selector類定義如下: open(

android客戶和servlet服務簡單登入實現

本文實現了一個android客戶端輸入使用者名稱和密碼登入跳轉到其他android客戶端介面的簡單demo,主要是熟悉android客戶端的網路程式設計,服務端的程式設計,資料庫的操作。 1、android客戶端 主介面如下所示: 對應的佈局檔案: activity_ma

go服務"設定cookie"來看cookie的本質

       cookie到底是什麼, 很多地方越說越亂,玄乎其玄, 其實,很簡單, 一起來看看。        go 服務端的程式碼為: package main import "net/http" func main() { http.HandleFunc

UDP 多執行緒服務簡單客戶

首先來了解UDP協議的幾個特性 (1)UDP是一個無連線協議,傳輸資料之前源端和終端不建立連線,當UDP它想傳送時就簡單地去抓取來自應用程式的資料,並儘可能快地把它扔到網路上。在傳送端,UDP傳送資料的速度僅僅是受應用程式生成資料的速度、計算機的能力和傳輸頻寬的限制;在接收

go語言 socket程式設計系列】從單執行緒到簡單多執行緒的服務搭建

簡單單執行緒serverdemo 通過下面程式碼簡單搭建一個服務端,並通過telnet模擬客戶端,演示多客戶端同時請求訪問單執行緒伺服器時的阻塞現象。 package main import ( "fmt" "net" "os" ) func main() {

Go Kafka客戶簡單示例

一. 準備 安裝依賴庫saramago get github.com/Shopify/sarama該庫要求kafka版本在0.8及以上,支援kafka定義的high-level API和low-le

01 ftp上傳簡單示例服務

import json import socket import struct server = socket.socket() server.bind(('127.0.0.1',8001)) server.listen() conn,addr = server.accept() #首先接收檔案的描

WCF服務與使用HttpClient的Android客戶簡單示例

WCF服務端 Contract using System.Collections.Generic; using System.Runtime.Serialization; using System.ServiceModel; using System.S

WCF服務與使用HttpURLConnection的Android客戶簡單示例

WCF服務端 契約Contract using System.ServiceModel; using System.ServiceModel.Web; namespace Contract { /// <summary> /

Go實戰--實現一個簡單的tcp服務和客戶(The way to go)

生命不止,繼續 go go go !!! 之前介紹了go為我們提供的net/http包,很方便的建立一些api。 今天就來點實戰,寫一個簡單的tcp的服務端、客戶端程式。 按照國際慣例,還是先介紹一點點基礎知識。 * net.Listen* Liste

JPush簡單Java服務案例實現

服務端 開發者 comm platform die spa message else 獲取數據 一、激光推送準備工作 1、註冊極光推送開發者賬號,創建應用: 2、完成推送設置,填寫應用名提交生成安裝包: 3、掃碼安裝簡單的測試apk,查看應用信息會有AppKey和Mas

編寫一個簡單的TCP服務和客戶

不同的 大連 終端 服務器端 com 讀寫 所有 字數 資料 下面的實驗環境是linux系統。 效果如下: 1.啟動服務端程序,監聽在6666端口上 2.啟動客戶端,與服務端建立TCP連接 3.建立完TCP連接,在客戶端上向服務端發送消息 4.斷開

Http 服務 簡單示例

port net all resp fatal nal fun final pack 現在我們實現一個GO的Web http服務 只做演示,沒有實際功能 但是能看出Go做Http服務的簡潔 **************************************** p

python---》客戶服務的基礎(做一個簡單的客戶服務

python 今天我們分享的內容是python簡單的客戶端與服務端,此處僅介紹一些簡單的函數,並作出來一個玩兒玩兒。 在開始之前呢,先用一張圖表示他們之間的關系 我們來按照這個步伐依次介紹:服務端:import socketserver=socket.socket()#此處是為了創建

jdbc-mysql基礎 增刪查改 簡單示例

做的 裏的 http exec pda 針對 ping 含義 ade 禮悟:   好好學習多思考,尊師重道存感恩。葉見尋根三二一,江河湖海同一體。 虛懷若谷良心主,願行無悔給最苦。讀書鍛煉強身心,誠勸且行且珍惜。   數據、數據,命根就在數據