# README
A estrutura de código fornecida parece ser uma implementação de um pacote chamado "dataset". O pacote inclui uma estrutura chamada DataSet com vários métodos associados a ela. Aqui está uma descrição geral dos principais elementos da estrutura e seus métodos:
DataSet (estrutura):
Connection: Um ponteiro para uma estrutura Conn, que representa uma conexão com o banco de dados.
Columns: Uma lista de nomes de colunas.
Sql: Uma estrutura Strings que contém uma consulta SQL e seus parâmetros.
rows: Uma lista de linhas (registros) retornados do banco de dados.
param: Um mapa de parâmetros usados na consulta SQL.
index: Um índice usado para navegar pelas linhas retornadas.
Recno: O número atual do registro sendo acessado.
tx: Um ponteiro para uma transação SQL.
Métodos da estrutura DataSet:
Eof() bool: Verifica se o cursor está no final do conjunto de dados.
Count() int: Retorna o número de registros no conjunto de dados.
GetParams() []any: Retorna uma lista de valores de parâmetros.
Open() error: Executa a consulta SQL e popula o conjunto de dados com os resultados.
StartTransaction() error: Inicia uma transação.
Commit() error: Confirma uma transação.
Rollback() error: Desfaz uma transação.
ExecTransact() (sql.Result, error): Executa uma consulta dentro de uma transação.
ExecDirect() (sql.Result, error): Executa uma consulta diretamente no banco de dados.
scan(list *sql.Rows): Lê as linhas retornadas do banco de dados e as armazena no conjunto de dados.
ParamByName(paramName string, paramValue any) *DataSet: Define um valor para um parâmetro.
FieldByName(fieldName string) cp.Field: Retorna um campo específico pelo nome.
Locate(key string, value any) bool: Localiza um registro com base em um campo e valor específicos.
First(): Move o cursor para o primeiro registro.
Next(): Move o cursor para o próximo registro.
IsEmpty() bool: Verifica se o conjunto de dados está vazio.
IsNotEmpty() bool: Verifica se o conjunto de dados não está vazio.
RowInStruck(targetStruct interface{}) ([]interface{}, error): Mapeia os registros do conjunto de dados para uma estrutura fornecida.
GetDataSet(pconn *conn.Conn) *DataSet: Cria e retorna uma nova instância do DataSet com uma conexão fornecida.
Exemplo de uso 1
package main
import (
"fmt"
"time"
ora "github.com/aoticombr/golang/connection"
ds "github.com/aoticombr/golang/dataset"
)
func main() {
conn, _ := ora.GetConn(ora.ORA)
defer conn.Disconnect()
q := ds.GetDataSet(conn)
q.Sql.Add("SELECT cdcontaspagar, historico, dtaconta, valor FROM CONTASPAGAR where rownum <= 10")
q.Open()
q.First()
fmt.Println("q.Eof():", q.Eof())
for !q.Eof() {
fmt.Println(
q.FieldByName("cdcontaspagar").AsInt64(),
q.FieldByName("historico").AsString(),
q.FieldByName("dtaconta").AsDateTime(),
q.FieldByName("valor").AsFloat64(),
)
q.Next()
}
}
Exemplo de uso 2
package main
import (
"fmt"
"time"
ora "github.com/aoticombr/golang/connection"
ds "github.com/aoticombr/golang/dataset"
)
type ContasPagar struct {
Cdcontaspagar int64
Historico string
Dtaconta time.Time
Valor float32
}
func main() {
conn, _ := ora.GetConn(ora.ORA)
defer conn.Disconnect()
q := ds.GetDataSet(conn)
q.Sql.Add("SELECT cdcontaspagar, historico, dtaconta, valor FROM CONTASPAGAR where rownum <= 10")
q.Open()
q.First()
//var contas []ContasPagar
results, err := q.RowInStructList(ContasPagar{})
if err != nil {
fmt.Println("Erro ao executar a consulta:", err)
return
}
fmt.Println("results:", results)
for _, result := range results {
contasPagar, ok := result.(ContasPagar) // Faz a conversão para o tipo correto
if !ok {
fmt.Println("Erro ao converter resultado para ContasPagar")
continue
}
fmt.Println("Cdcontaspagar:", contasPagar.Cdcontaspagar)
fmt.Println("Historico:", contasPagar.Historico)
fmt.Println("Dtaconta:", contasPagar.Dtaconta)
fmt.Println("Valor:", contasPagar.Valor)
fmt.Println("----------------------")
}
}