Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7093684
  • 博文数量: 3857
  • 博客积分: 6409
  • 博客等级: 准将
  • 技术积分: 15948
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 16:48
个人简介

迷彩 潜伏 隐蔽 伪装

文章分类

全部博文(3857)

文章存档

2017年(5)

2016年(63)

2015年(927)

2014年(677)

2013年(807)

2012年(1241)

2011年(67)

2010年(7)

2009年(36)

2008年(28)

分类: SQLServer

2014-03-14 11:03:43

原文地址:Go语言连接sql server 作者:雨天搁浅

以下代码的运行环境为:sql server2008; go版本为1.2;
前几天折腾go语言,在自己的电脑上是用的mysql,用了原始的sql语言还有其它的一些orm(例如beedb),连接都没什么问题,不过在连接sql server的时候多少还是有些不足,
这里估计是sql的第三方驱动还不是很完善,貌似对mssql的支持不是很好,这里有一些测试过的代码,可以运行:

点击(此处)折叠或打开

  1. CREATE TABLE Test
  2. (
  3.     playname NVARCHAR(10) NOT NULL PRIMARY KEY,
  4.     MATCH INT NOT NULL
  5. )

上面是数据库表创建代码,相当简单的一个表,只有两个字段。

点击(此处)折叠或打开

  1. package main

  2. import (
  3.     _ "code.google.com/p/odbc"
  4.     "database/sql"
  5.     "fmt"
  6.     //"github.com/astaxie/beedb"
  7.     //"github.com/weigj/go-odbc"
  8. )

  9. func main() {
  10.     db, err := sql.Open("odbc", "driver={sql server};server=.;uid=sa;pwd=123qwe;database=DBTest")
  11.     if err != nil {
  12.         fmt.Println(err)
  13.         return
  14.     }

  15.     /*stms, err := db.Prepare("INSERT INTO dbo.Test (playname, MATCH ) VALUES ( ?, ? )")
  16.     _, err = stms.Exec("zk", 23)
  17.     CheckError(err)*/
  18.     /*stmt, err := db.Prepare("delete from Test where playname=?")
  19.     CheckError(err)

  20.     res, err := stmt.Exec("zk")
  21.     CheckError(err)

  22.     affect, err := res.RowsAffected()
  23.     CheckError(err)

  24.     fmt.Println(affect)*/

  25.     /*stms, err := db.Prepare("update Test set Match=? where playname=?")
  26.     _, err = stms.Exec(12, "p")
  27.     CheckError(err)*/
  28.     rows, err := db.Query("select MATCH from Test where playname=?", "p")
  29.     var match int
  30.     for rows.Next() {
  31.         rows.Scan(&match)
  32.         fmt.Println(match)
  33.     }

  34. }

  35. func CheckError(err error) {
  36.     if err != nil {
  37.         panic(err)
  38.     }
  39. }
上面就是连接数据库并操作的代码,当时在找mssql驱动的时候用了两个不同的驱动测试,不过貌似这两个都会有点小问题,驱动代码的实现不是很完全有点小bug(也许是我自己代码写的有误导致连接不正确);不过上面的例子都能够正确运行,这里查询和其它的操作不同的是用了Query这个方法,返回rows,就是把每一行返回了,之后调用scan将当前行的每个字段的数据赋给对应的变量。代码比较简单,就是给一个样例而已。在这里比较让我困惑的是sql.Open(....)里面的连接字符串不知道该如何填写,看来不同的数据库貌似连接方式还不一样,没有一个统一的连接方式。运行的时候可以选择测试的操作,然后把注释取消。
阅读(726) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~