diff options
| author | Andrew Guschin <guschin.drew@gmail.com> | 2022-05-30 02:21:56 +0400 |
|---|---|---|
| committer | Andrew Guschin <guschin.drew@gmail.com> | 2022-05-30 02:21:56 +0400 |
| commit | be8f64e35096b02339ac7100399167e5d0e3a8a6 (patch) | |
| tree | 49f02c6be438aaad9814d1fac4718bc4a97c64f3 /interface/database.go | |
| parent | 88a30448b2095370c1b7ede0c89d71244958184e (diff) | |
Добавление кода вставки записей в таблицы
Diffstat (limited to 'interface/database.go')
| -rw-r--r-- | interface/database.go | 36 |
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 +} |