44package root
55
66import (
7+ "fmt"
78 "github.com/microsoft/go-sqlcmd/internal/cmdparser"
89 "github.com/microsoft/go-sqlcmd/internal/config"
10+ "github.com/microsoft/go-sqlcmd/internal/pal"
911 "github.com/microsoft/go-sqlcmd/internal/sql"
1012)
1113
1214// Query defines the `sqlcmd query` command
1315type Query struct {
1416 cmdparser.Cmd
1517
16- text string
18+ text string
19+ database string
1720}
1821
1922func (c * Query ) DefineCommand (... cmdparser.CommandOptions ) {
@@ -25,7 +28,15 @@ func (c *Query) DefineCommand(...cmdparser.CommandOptions) {
2528 `sqlcmd query "SELECT @@SERVERNAME"` ,
2629 `sqlcmd query --text "SELECT @@SERVERNAME"` ,
2730 `sqlcmd query --query "SELECT @@SERVERNAME"` ,
28- }}},
31+ }},
32+ {Description : "Run a query using [master] database" , Steps : []string {
33+ `sqlcmd query "SELECT DB_NAME()" --database master` ,
34+ }},
35+ {Description : "Set new default database" , Steps : []string {
36+ fmt .Sprintf (`sqlcmd query "ALTER LOGIN [%s] WITH DEFAULT_DATABASE = [tempdb]" --database master` ,
37+ pal .UserName ()),
38+ }},
39+ },
2940 Run : c .run ,
3041 FirstArgAlternativeForFlag : & cmdparser.AlternativeForFlagOptions {
3142 Flag : "text" ,
@@ -47,6 +58,12 @@ func (c *Query) DefineCommand(...cmdparser.CommandOptions) {
4758 Name : "query" ,
4859 Shorthand : "q" ,
4960 Usage : "Command text to run" })
61+
62+ c .AddFlag (cmdparser.FlagOptions {
63+ String : & c .database ,
64+ Name : "database" ,
65+ Shorthand : "d" ,
66+ Usage : "Database to use" })
5067}
5168
5269// run executes the Query command.
@@ -58,9 +75,9 @@ func (c *Query) run() {
5875
5976 s := sql .New (sql.SqlOptions {})
6077 if c .text == "" {
61- s .Connect (endpoint , user , sql.ConnectOptions {Interactive : true })
78+ s .Connect (endpoint , user , sql.ConnectOptions {Database : c . database , Interactive : true })
6279 } else {
63- s .Connect (endpoint , user , sql.ConnectOptions {Interactive : false })
80+ s .Connect (endpoint , user , sql.ConnectOptions {Database : c . database , Interactive : false })
6481 }
6582
6683 s .Query (c .text )
0 commit comments