github.com/snowflakedb/gosnowflake@v1.9.0/cmd/select1/select1.go (about)

     1  // Example: Fetch one row.
     2  //
     3  // No cancel is allowed as no context is specified in the method call Query(). If you want to capture Ctrl+C to cancel
     4  // the query, specify the context and use QueryContext() instead. See selectmany for example.
     5  package main
     6  
     7  import (
     8  	"database/sql"
     9  	"flag"
    10  	"fmt"
    11  	"log"
    12  
    13  	sf "github.com/snowflakedb/gosnowflake"
    14  )
    15  
    16  func main() {
    17  	if !flag.Parsed() {
    18  		flag.Parse()
    19  	}
    20  
    21  	cfg, err := sf.GetConfigFromEnv([]*sf.ConfigParam{
    22  		{Name: "Account", EnvName: "SNOWFLAKE_TEST_ACCOUNT", FailOnMissing: true},
    23  		{Name: "User", EnvName: "SNOWFLAKE_TEST_USER", FailOnMissing: true},
    24  		{Name: "Password", EnvName: "SNOWFLAKE_TEST_PASSWORD", FailOnMissing: true},
    25  		{Name: "Host", EnvName: "SNOWFLAKE_TEST_HOST", FailOnMissing: false},
    26  		{Name: "Port", EnvName: "SNOWFLAKE_TEST_PORT", FailOnMissing: false},
    27  		{Name: "Protocol", EnvName: "SNOWFLAKE_TEST_PROTOCOL", FailOnMissing: false},
    28  	})
    29  	if err != nil {
    30  		log.Fatalf("failed to create Config, err: %v", err)
    31  	}
    32  	dsn, err := sf.DSN(cfg)
    33  	if err != nil {
    34  		log.Fatalf("failed to create DSN from Config: %v, err: %v", cfg, err)
    35  	}
    36  
    37  	db, err := sql.Open("snowflake", dsn)
    38  	if err != nil {
    39  		log.Fatalf("failed to connect. %v, err: %v", dsn, err)
    40  	}
    41  	defer db.Close()
    42  	query := "SELECT 1"
    43  	rows, err := db.Query(query) // no cancel is allowed
    44  	if err != nil {
    45  		log.Fatalf("failed to run a query. %v, err: %v", query, err)
    46  	}
    47  	defer rows.Close()
    48  	var v int
    49  	for rows.Next() {
    50  		err := rows.Scan(&v)
    51  		if err != nil {
    52  			log.Fatalf("failed to get result. err: %v", err)
    53  		}
    54  		if v != 1 {
    55  			log.Fatalf("failed to get 1. got: %v", v)
    56  		}
    57  	}
    58  	if rows.Err() != nil {
    59  		fmt.Printf("ERROR: %v\n", rows.Err())
    60  		return
    61  	}
    62  	fmt.Printf("Congrats! You have successfully run %v with Snowflake DB!\n", query)
    63  }