Имя: Пароль:
IT
 
вопрос по GO. надо указать 44 поля при выборке из MySQL
, ,
0 Renat11111
 
28.12.19
20:04
package main

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

type MySqlStruct struct {
    _Description   string
}

func main() {

    var (
        userid   = flag.String("U", "TestGo", "login_id")
        password = flag.String("P", "LLKJllkj1", "password")
        server   = flag.String("S", "localhost", "server_name[\\instance_name]")
        database = flag.String("d", "upgradetest", "db_name")
    )

    dsn := "server=" + *server + ";user id=" + *userid + ";password=" + *password + ";database=" + *database
    db, err := sql.Open("mssql", dsn)
    if err != nil {
        fmt.Println("Cannot connect: ", err.Error())
        return
    }
    defer db.Close()
    err = db.Ping()
    if err != nil {
        fmt.Println("Cannot connect: ", err.Error())
        return
    }

    rows, err := db.Query("select * from [_Reference512]")
    if err != nil {
        log.Fatal(err)
    }
    defer rows.Close()

    columnNames, err := rows.Columns() // []string{"id", "name"}
    if err != nil {
        // handle err
        log.Fatal(err)
    }

    for i, colName := range columnNames {
        fmt.Println(i)
        fmt.Println(colName)    
    }

    MyStrSlice := make([]*MySqlStruct, 0)
    for rows.Next() {

      MyStr := new(MySqlStruct)
      err := rows.Scan(&MyStr._Description)
      
      if err != nil {
        log.Fatal(err)
      }
      MyStrSlice = append(MyStrSlice, MyStr)
      
    }
    


}
1 Renat11111
 
28.12.19
20:05
Вот rows.Scan(&MyStr._Description) мне надо указать 44 поля )))))))))))) А мне нужно что то типа

Выборка.Следующий()
МояПеременная = Выборка._Description
2 Garykom
 
гуру
28.12.19
20:24
3 Garykom
 
гуру
28.12.19
20:27
(2)+ Хотя я не так понял наверно.

Тебе не хочется перечислять переменные (44 штуки) куда засунуть данные из полей для текущей строки?
4 Renat11111
 
28.12.19
20:29
(3) ага err := rows.Scan(&id, &name, &location) Было бы три поля как в примере Я бы сделал не лентяй )
5 Garykom
 
гуру
28.12.19
20:29
(4) https://issue.life/questions/42774467
err := rows.Scan(scanArgs...)
6 Garykom
 
гуру
28.12.19
20:31
7 Renat11111
 
28.12.19
20:35
(6)   columns, err := rows.Columns()
    if err != nil {
        return err
    }

    count := len(columns)
    values := make([]interface{}, count)
    scanArgs := make([]interface{}, count)
    for i := range values {
        scanArgs[i] = &values[i]
    }

Это похоже то Спасибо.
8 Garykom
 
гуру
28.12.19
20:36
9 Renat11111
 
28.12.19
20:39
после 1с сложно немного изузчать Go Продвигаюсь медленно очень Чисто для удовольствия изучаю Кстати уже на вторую тему отвечаете Спасибо
10 Garykom
 
гуру
28.12.19
20:44
(9) После 1С что угодно изучать сложно, кстати обратное тоже верно, тру программисты если 1С видят у них ступор наступает обычно.
11 sevod
 
28.12.19
23:01
(10) это очень спорно. Я уверен что при отсутствии какого либо опыта и опыт 1С очень даже полезен.
Мне PHP и JS очень легко даются сейчас. Без 1С застрял бы где нибудь после функций. Я правда особо глубоко не копаю, развлекаюсь иногда. Когда изучал 1С, мозг взорвали конструкции с точками. Потому что про объекты не знал ничего. Только функции до 1С видел. Сейчас что нибудь навроде "->" или "=>" хоть и режут глаз, но легко понимаю.  То же ООП сразу же понял. Ну по крайней мере на начальном уровне.
12 Asmody
 
29.12.19
00:34
(11) js мозг не взрывает. Попробуй Haskell. Ну или хотя бы elm.
13 Garykom
 
гуру
29.12.19
00:36
(11) До магических констант и методов в php уже дошел? И как оно?
JS же начинает превращаться в зазеркальный шизофренический бред когда доходит до асинхронности и замыканий, причем а уй его знает как оно отработает когда вставлено в html странички в разных местах.
14 Garykom
 
гуру
29.12.19
00:36
(12) В теме ошибка у ТС не MySQL а MS SQL
15 Asmody
 
29.12.19
00:48
(14) Да там в коде все в кучу намешано.
16 Garykom
 
гуру
29.12.19
00:59
(15) А это он код откуда то дернул и не переименовал MySqlStruct