summaryrefslogtreecommitdiff
path: root/interface/database.go
diff options
context:
space:
mode:
Diffstat (limited to 'interface/database.go')
-rw-r--r--interface/database.go36
1 files changed, 35 insertions, 1 deletions
diff --git a/interface/database.go b/interface/database.go
index c911990..1d77827 100644
--- a/interface/database.go
+++ b/interface/database.go
@@ -4,6 +4,7 @@ import (
"database/sql"
"fmt"
_ "github.com/denisenkom/go-mssqldb"
+ "strings"
)
type SQLConnection struct {
@@ -72,6 +73,30 @@ func (conn *SQLConnection) getColumns(table string) ([]string, error) {
return result.Columns()
}
+func (conn *SQLConnection) getIdentityColumns(table string) ([]string, error) {
+ result, err := conn.db.Query(
+ fmt.Sprintf(
+ `SELECT c.name FROM shipping.sys.objects o inner join shipping.sys.columns c on o.object_id = c.object_id
+ where c.is_identity = 1 and o.is_ms_shipped = 0 and o.name = N'%s'`, table))
+ if err != nil {
+ return nil, nil
+ }
+
+ var msg []string
+ cols, _ := result.Columns()
+ for result.Next() {
+ boxes := make([]string, len(cols))
+ dest := make([]interface{}, len(cols))
+ for i, _ := range dest {
+ dest[i] = &boxes[i]
+ }
+ _ = result.Scan(dest...)
+ msg = append(msg, boxes[0])
+ }
+ _ = result.Close()
+ return msg, nil
+}
+
func (conn *SQLConnection) getTable(table string) ([][]string, error) {
var err error
var msg [][]string
@@ -98,7 +123,7 @@ func (conn *SQLConnection) getTable(table string) ([][]string, error) {
func (conn *SQLConnection) getOneToManyTable(manyTable string, manyColumn string, oneValue string) ([][]string, error) {
result, err := conn.db.Query(fmt.Sprintf(
- "SELECT * FROM %s WHERE %s=%s", manyTable, manyColumn, oneValue))
+ "SELECT * FROM %s WHERE %s=N'%s'", manyTable, manyColumn, oneValue))
if err != nil {
return nil, err
}
@@ -122,3 +147,12 @@ func (conn *SQLConnection) deleteWhere(table string, constraint string) error {
_, err := conn.db.Query(fmt.Sprintf("DELETE FROM %s WHERE %s", table, constraint))
return err
}
+
+func (conn *SQLConnection) insertIntoTable(table string, columns []string, values []string) error {
+ _, err := conn.db.Query(fmt.Sprintf(
+ "INSERT INTO %s (%s) VALUES (N'%s')",
+ table,
+ strings.Join(columns, ","),
+ strings.Join(values, "',N'")))
+ return err
+}