Chinaunix首页 | 论坛 | 博客
  • 博客访问: 167006
  • 博文数量: 20
  • 博客积分: 317
  • 博客等级: 二等列兵
  • 技术积分: 809
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-05 18:37
文章分类

全部博文(20)

文章存档

2014年(1)

2013年(5)

2012年(14)

我的朋友

分类: SQLServer

2014-03-13 19:16:32

以下代码的运行环境为: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(....)里面的连接字符串不知道该如何填写,看来不同的数据库貌似连接方式还不一样,没有一个统一的连接方式。运行的时候可以选择测试的操作,然后把注释取消。
阅读(8945) | 评论(0) | 转发(1) |
0

上一篇:关于hibernate的一点小总结

下一篇:没有了

给主人留下些什么吧!~~