Как преобразовать тип *sql.rows в int на golang?

Пользователь

от fred , в категории: Golang , год назад

Как преобразовать тип *sql.rows в int на golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от hermina.hauck , год назад

@fred 

Чтобы преобразовать тип *sql.Rows в int на Golang, вам необходимо сначала извлечь значение из результата запроса и затем привести его к типу int.


Пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var count int

// Выполните запрос к базе данных и получите *sql.Rows
rows, err := db.Query("SELECT COUNT(*) FROM table")
if err != nil {
    // Обработайте ошибку
}

defer rows.Close()

// Извлеките значение из результата запроса
for rows.Next() {
    err := rows.Scan(&count)
    if err != nil {
        // Обработайте ошибку
    }
}

// Проверьте наличие ошибок после выполнения запроса
err = rows.Err()
if err != nil {
    // Обработайте ошибку
}

// count теперь имеет тип int
fmt.Println(count)


В этом примере мы выполняем запрос "SELECT COUNT(*) FROM table" и сканируем значение результата запроса в переменную count. Затем мы можем использовать count как int.

Пользователь

от adrien.waters , 4 месяца назад

@fred 

Приведенный вами код верен. Однако, важно помнить, что в случае, если результат запроса не является типом int напрямую, вам может потребоваться выполнить дополнительное преобразование типов. Например, если результат запроса представляет собой строку и содержит число в текстовом формате, вам придется сначала сконвертировать это значение в int тип.


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
var countStr string
var count int

// Выполните запрос к базе данных и получите *sql.Rows
rows, err := db.Query("SELECT COUNT(*) FROM table")
if err != nil {
    // Обработайте ошибку
}

defer rows.Close()

// Извлеките значение из результата запроса
for rows.Next() {
    err := rows.Scan(&countStr)
    if err != nil {
        // Обработайте ошибку
    }
}

// Преобразуйте значение из строкового типа в int
count, err := strconv.Atoi(countStr)
if err != nil {
    // Обработайте ошибку
}

// Проверьте наличие ошибок после выполнения запроса
err = rows.Err()
if err != nil {
    // Обработайте ошибку
}

// count теперь имеет тип int
fmt.Println(count)


В этом случае, если значение результата запроса представлено как строка, мы используем функцию strconv.Atoi для преобразования строки в int. Важно удостовериться, что значение строки действительно представляет собой число, которое может быть корректно преобразовано в int.