Go 언어 조작 MySQL

장절
앞 에 써 주세요.
go 조작 MySQL소감
1.앞 에 쓴다
다음 기록 에는 당일 업무 에서 배 운 것 을 추가 로 기록 할 것 이다.이 는 기술,소프트 파워-소통,심리 상태,재 태 크,개인 사고 등 을 포함한다.
2.go 작업 MySQL
예 를 들 어 자바 작업 데이터베이스,프로 그래 밍 논 리 는 다음 과 같 습 니 다.드라이버 로 딩,연결 가 져 오기(connect),Statement||PrepareStatement 대상 생 성,sql 전송,exec or query,결과 집합 Resultset 가 져 오기,go 작업 MySQL 의 절차 도 다음 과 같 습 니 다.
메모:go 로드 드라이브 는 원 격 import 의 드라이버 github.com/go-sql-driver/mysql 에 의존 해 야 합 니 다.
다음 코드 에서 보 듯 이 기본 동작 인 CURD DbOperate.go 를 보 여 줍 니 다.
package DB

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

//         
func connDb() *sql.DB {
    db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/demo?charset=utf8")
    checkErr(err)
    return db
}

//insert
func DoInsert(sql string) {
    db := connDb()
    sql = "insert into test(name) value (?)"
    
    stmt, err := db.Prepare(sql)
    checkErr(err)

    res, err := stmt.Exec("bofengliu")
    checkErr(err)

    fmt.Printf("   ,%v", res)
}

//delete
func DoDelete(id int) {
    db := connDb()
    sql := "delete from test where id = ?"

    stmt, err := db.Prepare(sql)
    checkErr(err)

    res, err := stmt.Exec(id)
    checkErr(err)

    res = nil

    fmt.Println(res)
}

//update
func DoUpdate(name string, id int) int64 {
    db := connDb()
    sql := "update test set name = ? where id = ?"

    stmt, err := db.Prepare(sql)
    checkErr(err)

    res, err := stmt.Exec(name, id)
    checkErr(err)

    affect, err := res.RowsAffected()

    fmt.Println("        ", affect)

    return affect
}

func DoQueryByName(name string) {
    sql := "select * from test where name = \"" + name + "\""
    db := connDb()

    res, err := db.Query(sql)
    checkErr(err)

    for res.Next() {
        var id int
        var name string
        err := res.Scan(&id, &name)
        checkErr(err)

        fmt.Println(id)
        fmt.Println(name)
    }

}

func checkErr(err error) {
    if err != nil {
        panic(err.Error())
    }
}

데이터 시트 구 조 는 다음 과 같다.
 CREATE TABLE `test` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `name` (`name`),
  KEY `idx_name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8 |

상기 코드 에서 import 를 통 해 github.com/go-sql-driver/mysql 을 도입 하 였 으 니 앞 에 가 있 는 지 주의 하 십시오.이 대표 적 으로 도 입 된 원 격 패 키 지 는 코드 에서 직접 사용 되 지 않 고 프로그램 에 의 해 간접 적 으로 불 러 옵 니 다.로 딩 위 치 는 db,err:=sql.Open("my sql","root:@tcp(127.0.0.1:330 6)/demo?charset=utf 8")입 니 다.
소스 코드 는 다음 과 같 습 니 다.
//          ,          MySQL   
func Open(driverName, dataSourceName string) (*DB, error) {
    driversMu.RLock()
    driveri, ok := drivers[driverName]
    driversMu.RUnlock()
    if !ok {
        return nil, fmt.Errorf("sql: unknown driver %q (forgotten import?)", driverName)
    }

    if driverCtx, ok := driveri.(driver.DriverContext); ok {
        connector, err := driverCtx.OpenConnector(dataSourceName)
        if err != nil {
            return nil, err
        }
        return OpenDB(connector), nil
    }

    return OpenDB(dsnConnector{dsn: dataSourceName, driver: driveri}), nil
}


테스트 를 통 해 문제 가 없습니다.이것 은 go 작업 MySQL 초기 체험 입 니 다.
3.소감
기 초 는 튼튼 해 야 하고 간단 한 것 일수 록 기록 이 필요 하 다.
끝나다

좋은 웹페이지 즐겨찾기