From be8f64e35096b02339ac7100399167e5d0e3a8a6 Mon Sep 17 00:00:00 2001 From: Andrew Guschin Date: Mon, 30 May 2022 02:21:56 +0400 Subject: =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BA=D0=BE=D0=B4=D0=B0=20=D0=B2=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D0=B2=D0=BA=D0=B8=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D0=B5=D0=B9?= =?UTF-8?q?=20=D0=B2=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- interface/database.go | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'interface/database.go') 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 +} -- cgit v1.2.3