Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 51 additions & 46 deletions samples/tutorials/go/columnstore.go
Original file line number Diff line number Diff line change
@@ -1,46 +1,51 @@
package main

import _ "github.com/denisenkom/go-mssqldb"
import "database/sql"
import "log"
import "fmt"
import "time"

var server = "localhost"
var port = 1433
var user = "sa"
var password = "your_password"
var database = "SampleDB"

// Delete an employee from database
func ExecuteAggregateStatement(db *sql.DB) {
result, err := db.Prepare("SELECT SUM(Price) as sum FROM Table_with_5M_rows")
if err != nil {
fmt.Println("Error preparing query: " + err.Error())
}

row := result.QueryRow()
var sum string
err = row.Scan(&sum)
fmt.Printf("Sum: %s\n", sum)
}

func main() {
// Connect to database
connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d;database=%s;",
server, user, password, port, database)
conn, err := sql.Open("mssql", connString)
if err != nil {
log.Fatal("Open connection failed:", err.Error())
}
fmt.Printf("Connected!\n")
defer conn.Close()

t1 := time.Now()
fmt.Printf("Start time: %s\n", t1)

ExecuteAggregateStatement(conn)

t2 := time.Since(t1)
fmt.Printf("The query took: %s\n", t2)
}
package main

import (
"database/sql"
"fmt"
"log"
"time"

_ "github.com/denisenkom/go-mssqldb"
)

var (
server = "localhost"
port = 1433
user = "sa"
password = "your_password"
database = "SampleDB"
)

// ExecuteAggregateStatement output summary of prices
func ExecuteAggregateStatement(db *sql.DB) {
result, err := db.Prepare("SELECT SUM(Price) as sum FROM Table_with_5M_rows")
if err != nil {
fmt.Println("Error preparing query: " + err.Error())
}

row := result.QueryRow()
var sum string
err = row.Scan(&sum)
fmt.Printf("Sum: %s\n", sum)
}

func main() {
// Connect to database
connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d;database=%s;",
server, user, password, port, database)
conn, err := sql.Open("mssql", connString)
if err != nil {
log.Fatal("Open connection failed:", err.Error())
}
fmt.Printf("Connected!\n")
defer conn.Close()

t1 := time.Now()
fmt.Printf("Start time: %s\n", t1)

ExecuteAggregateStatement(conn)

t2 := time.Since(t1)
fmt.Printf("The query took: %s\n", t2)
}
70 changes: 37 additions & 33 deletions samples/tutorials/go/connect.go
Original file line number Diff line number Diff line change
@@ -1,33 +1,37 @@
package main

import _ "github.com/denisenkom/go-mssqldb"
import "database/sql"
import "log"
import "fmt"


var server = "localhost"
var port = 1433
var user = "sa"
var password = "your_password"

func main() {
connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d",
server, user, password, port)

conn, err := sql.Open("mssql", connString)
if err != nil {
log.Fatal("Open connection failed:", err.Error())
}
fmt.Printf("Connected!\n")
defer conn.Close()
stmt, err := conn.Prepare("select @@version")
row := stmt.QueryRow()
var result string

err = row.Scan(&result)
if err != nil {
log.Fatal("Scan failed:", err.Error())
}
fmt.Printf("%s\n", result)
}
package main

import (
"database/sql"
"fmt"
"log"

_ "github.com/denisenkom/go-mssqldb"
)

var (
server = "localhost"
port = 1433
user = "sa"
password = "your_password"
)

func main() {
connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d",
server, user, password, port)

conn, err := sql.Open("mssql", connString)
if err != nil {
log.Fatal("Open connection failed:", err.Error())
}
fmt.Printf("Connected!\n")
defer conn.Close()
stmt, err := conn.Prepare("select @@version")
row := stmt.QueryRow()
var result string

err = row.Scan(&result)
if err != nil {
log.Fatal("Scan failed:", err.Error())
}
fmt.Printf("%s\n", result)
}
215 changes: 116 additions & 99 deletions samples/tutorials/go/crud.go
Original file line number Diff line number Diff line change
@@ -1,99 +1,116 @@
package main

import _ "github.com/denisenkom/go-mssqldb"
import "database/sql"
import "log"
import "fmt"

var server = "localhost"
var port = 1433
var user = "sa"
var password = "your_password"
var database = "SampleDB"

// Create an employee
func CreateEmployee(db *sql.DB, name string, location string) (int64, error) {
tsql := fmt.Sprintf("INSERT INTO TestSchema.Employees (Name, Location) VALUES ('%s','%s');",
name, location)
result, err := db.Exec(tsql)
if err != nil {
fmt.Println("Error inserting new row: " + err.Error())
return -1, err
}
return result.LastInsertId()
}

// Read all employees
func ReadEmployees(db *sql.DB) (int, error) {
tsql := fmt.Sprintf("SELECT Id, Name, Location FROM TestSchema.Employees;")
rows, err := db.Query(tsql)
if err != nil {
fmt.Println("Error reading rows: " + err.Error())
return -1, err
}
defer rows.Close()
var count int = 0
for rows.Next(){
var name, location string
var id int
err := rows.Scan(&id, &name, &location)
if err != nil {
fmt.Println("Error reading rows: " + err.Error())
return -1, err
}
fmt.Printf("ID: %d, Name: %s, Location: %s\n", id, name, location)
count++
}
return count, nil
}

// Update an employee's information
func UpdateEmployee(db *sql.DB, name string, location string) (int64, error) {
tsql := fmt.Sprintf("UPDATE TestSchema.Employees SET Location = '%s' WHERE Name= '%s'",
location, name)
result, err := db.Exec(tsql)
if err != nil {
fmt.Println("Error updating row: " + err.Error())
return -1, err
}
return result.LastInsertId()
}

// Delete an employee from database
func DeleteEmployee(db *sql.DB, name string) (int64, error) {
tsql := fmt.Sprintf("DELETE FROM TestSchema.Employees WHERE Name='%s';", name)
result, err := db.Exec(tsql)
if err != nil {
fmt.Println("Error deleting row: " + err.Error())
return -1, err
}
return result.RowsAffected()
}

func main() {
// Connect to database
connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d;database=%s;",
server, user, password, port, database)
conn, err := sql.Open("mssql", connString)
if err != nil {
log.Fatal("Open connection failed:", err.Error())
}
fmt.Printf("Connected!\n")
defer conn.Close()

// Create employee
createId, err := CreateEmployee(conn, "Jake", "United States")
fmt.Printf("Inserted ID: %d successfully.\n", createId)

// Read employees
count, err := ReadEmployees(conn)
fmt.Printf("Read %d rows successfully.\n", count)

// Update from database
updateId, err := UpdateEmployee(conn, "Jake", "Poland")
fmt.Printf("Updated row with ID: %d successfully.\n", updateId)

// Delete from database
rows, err := DeleteEmployee(conn, "Jake")
fmt.Printf("Deleted %d rows successfully.\n", rows)
}
package main

import (
"database/sql"
"fmt"
"log"

_ "github.com/denisenkom/go-mssqldb"
)

var (
server = "localhost"
port = 1433
user = "sa"
password = "your_password"
database = "SampleDB"
)

// CreateEmployee create an employee
func CreateEmployee(db *sql.DB, name string, location string) (int64, error) {
tsql := fmt.Sprintf("INSERT INTO TestSchema.Employees (Name, Location) VALUES ('%s','%s');",
name, location)
result, err := db.Exec(tsql)
if err != nil {
fmt.Println("Error inserting new row: " + err.Error())
return -1, err
}
return result.LastInsertId()
}

// ReadEmployees read all employees
func ReadEmployees(db *sql.DB) (int, error) {
tsql := fmt.Sprintf("SELECT Id, Name, Location FROM TestSchema.Employees;")
rows, err := db.Query(tsql)
if err != nil {
fmt.Println("Error reading rows: " + err.Error())
return -1, err
}
defer rows.Close()
count := 0
for rows.Next() {
var name, location string
var id int
err := rows.Scan(&id, &name, &location)
if err != nil {
fmt.Println("Error reading rows: " + err.Error())
return -1, err
}
fmt.Printf("ID: %d, Name: %s, Location: %s\n", id, name, location)
count++
}
return count, nil
}

// UpdateEmployee update an employee's information
func UpdateEmployee(db *sql.DB, name string, location string) (int64, error) {
tsql := fmt.Sprintf("UPDATE TestSchema.Employees SET Location = '%s' WHERE Name= '%s'",
location, name)
result, err := db.Exec(tsql)
if err != nil {
fmt.Println("Error updating row: " + err.Error())
return -1, err
}
return result.LastInsertId()
}

// DeleteEmployee delete an employee from database
func DeleteEmployee(db *sql.DB, name string) (int64, error) {
tsql := fmt.Sprintf("DELETE FROM TestSchema.Employees WHERE Name='%s';", name)
result, err := db.Exec(tsql)
if err != nil {
fmt.Println("Error deleting row: " + err.Error())
return -1, err
}
return result.RowsAffected()
}

func main() {
// Connect to database
connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d;database=%s;",
server, user, password, port, database)
conn, err := sql.Open("mssql", connString)
if err != nil {
log.Fatal("Open connection failed:", err.Error())
}
fmt.Printf("Connected!\n")
defer conn.Close()

// Create employee
createID, err := CreateEmployee(conn, "Jake", "United States")
if err != nil {
log.Fatal("CreateEmployee failed:", err.Error())
}
fmt.Printf("Inserted ID: %d successfully.\n", createID)

// Read employees
count, err := ReadEmployees(conn)
if err != nil {
log.Fatal("ReadEmployees failed:", err.Error())
}
fmt.Printf("Read %d rows successfully.\n", count)

// Update from database
updateID, err := UpdateEmployee(conn, "Jake", "Poland")
if err != nil {
log.Fatal("UpdateEmployee failed:", err.Error())
}
fmt.Printf("Updated row with ID: %d successfully.\n", updateID)

// Delete from database
rows, err := DeleteEmployee(conn, "Jake")
if err != nil {
log.Fatal("DeleteEmployee failed:", err.Error())
}
fmt.Printf("Deleted %d rows successfully.\n", rows)
}
Loading