@@ -18,51 +18,47 @@ await Parser.Default.ParseArguments<Options>(args)
1818 var connString = $ "Host={ options . Host } ;Port={ options . Port } ;SSL Mode={ options . SslMode } ;" +
1919 $ "Username={ options . Username } ;Password={ options . Password } ;Database={ options . Database } ";
2020 Console . WriteLine ( $ "Connecting to { connString } \n ") ;
21- using ( var conn = new NpgsqlConnection ( connString ) )
22- {
23- conn . Open ( ) ;
24- var program = new DatabaseWorkloads ( ) ;
25- await program . SystemQueryExample ( conn ) ;
26- await program . BasicConversationExample ( conn ) ;
27- await program . AsyncUnnestExample ( conn ) ;
28- conn . Close ( ) ;
29- }
30-
21+ await using var conn = new NpgsqlConnection ( connString ) ;
22+ conn . Open ( ) ;
23+ await DatabaseWorkloads . SystemQueryExample ( conn ) ;
24+ await DatabaseWorkloads . BasicConversationExample ( conn ) ;
25+ await DatabaseWorkloads . UnnestExample ( conn ) ;
26+ conn . Close ( ) ;
3127 } ) ;
3228
3329 }
3430
3531 public class Options
3632 {
3733 [ Option ( 'h' , "host" , Required = false , HelpText = "Host name to connect to" , Default = "localhost" ) ]
38- public string Host { get ; set ; }
34+ public string ? Host { get ; set ; }
3935
4036 [ Option ( 'p' , "port" , Required = false , HelpText = "Port number to connect to" , Default = 5432 ) ]
4137 public int Port { get ; set ; }
4238
4339 // Controls whether SSL is used, depending on server support. Can be Require, Disable, or Prefer.
4440 // https://www.npgsql.org/doc/connection-string-parameters.html#security-and-encryption
4541 [ Option ( 's' , "ssl-mode" , Required = false , HelpText = "Which SSL mode to use" , Default = "Disable" ) ]
46- public string SslMode { get ; set ; }
42+ public string ? SslMode { get ; set ; }
4743
4844 [ Option ( 'u' , "username" , Required = false , HelpText = "Username to authenticate with" , Default = "crate" ) ]
49- public string Username { get ; set ; }
45+ public string ? Username { get ; set ; }
5046 [ Option ( 'w' , "password" , Required = false , HelpText = "Password to authenticate with" , Default = "" ) ]
51- public string Password { get ; set ; }
47+ public string ? Password { get ; set ; }
5248 [ Option ( 'd' , "database" , Required = false , HelpText = "Database to use" , Default = "testdrive" ) ]
53- public string Database { get ; set ; }
49+ public string ? Database { get ; set ; }
5450 }
5551
5652 }
5753
5854 public class DatabaseWorkloads
5955 {
60- public async Task < List < string > > SystemQueryExample ( NpgsqlConnection conn )
56+ public static async Task < List < string > > SystemQueryExample ( NpgsqlConnection conn )
6157 {
6258 Console . WriteLine ( "Running SystemQueryExample" ) ;
6359 var mountains = new List < string > ( ) ;
64- using ( var cmd = new NpgsqlCommand ( "SELECT mountain FROM sys.summits ORDER BY 1 LIMIT 25" , conn ) )
65- using ( var reader = cmd . ExecuteReader ( ) )
60+ await using ( var cmd = new NpgsqlCommand ( "SELECT mountain FROM sys.summits ORDER BY 1 LIMIT 25" , conn ) )
61+ await using ( var reader = cmd . ExecuteReader ( ) )
6662 {
6763 while ( await reader . ReadAsync ( ) )
6864 {
@@ -76,31 +72,32 @@ public async Task<List<string>> SystemQueryExample(NpgsqlConnection conn)
7672 return mountains ;
7773 }
7874
79- public async Task < List < int > > BasicConversationExample ( NpgsqlConnection conn )
75+ public static async Task < List < int > > BasicConversationExample ( NpgsqlConnection conn )
8076 {
8177 Console . WriteLine ( "Running BasicConversationExample" ) ;
8278
8379 // Submit DDL, create database schema.
84- using ( var cmd = new NpgsqlCommand ( "DROP TABLE IF EXISTS testdrive.basic" , conn ) )
80+ await using ( var cmd = new NpgsqlCommand ( "DROP TABLE IF EXISTS testdrive.basic" , conn ) )
8581 {
8682 cmd . ExecuteNonQuery ( ) ;
8783 }
88- using ( var cmd = new NpgsqlCommand ( "CREATE TABLE testdrive.basic (x int)" , conn ) )
84+
85+ await using ( var cmd = new NpgsqlCommand ( "CREATE TABLE testdrive.basic (x int)" , conn ) )
8986 {
9087 cmd . ExecuteNonQuery ( ) ;
9188 }
9289
9390 // Insert single data point.
94- using ( var cmd = new NpgsqlCommand ( "INSERT INTO testdrive.basic (x) VALUES (@x)" , conn ) )
91+ await using ( var cmd = new NpgsqlCommand ( "INSERT INTO testdrive.basic (x) VALUES (@x)" , conn ) )
9592 {
9693 cmd . Parameters . AddWithValue ( "x" , - 999 ) ;
9794 cmd . ExecuteNonQuery ( ) ;
9895 }
9996
10097 // Insert multiple data points.
101- using ( var cmd = new NpgsqlCommand ( "INSERT INTO testdrive.basic (x) VALUES (@x)" , conn ) )
98+ await using ( var cmd = new NpgsqlCommand ( "INSERT INTO testdrive.basic (x) VALUES (@x)" , conn ) )
10299 {
103- using ( var transaction = conn . BeginTransaction ( ) )
100+ await using ( var transaction = conn . BeginTransaction ( ) )
104101 {
105102 cmd . Transaction = transaction ;
106103 cmd . Parameters . Add ( "@x" , NpgsqlDbType . Integer ) ;
@@ -116,15 +113,15 @@ public async Task<List<int>> BasicConversationExample(NpgsqlConnection conn)
116113 }
117114
118115 // Flush data.
119- using ( var cmd = new NpgsqlCommand ( "REFRESH TABLE testdrive.basic" , conn ) )
116+ await using ( var cmd = new NpgsqlCommand ( "REFRESH TABLE testdrive.basic" , conn ) )
120117 {
121118 cmd . ExecuteNonQuery ( ) ;
122119 }
123120
124121 // Query back data.
125122 var data = new List < int > ( ) ;
126- using ( var cmd = new NpgsqlCommand ( "SELECT x FROM testdrive.basic ORDER BY 1 ASC LIMIT 10" , conn ) )
127- using ( var reader = cmd . ExecuteReader ( ) )
123+ await using ( var cmd = new NpgsqlCommand ( "SELECT x FROM testdrive.basic ORDER BY 1 ASC LIMIT 10" , conn ) )
124+ await using ( var reader = cmd . ExecuteReader ( ) )
128125 {
129126 while ( await reader . ReadAsync ( ) )
130127 {
@@ -139,20 +136,20 @@ public async Task<List<int>> BasicConversationExample(NpgsqlConnection conn)
139136 return data ;
140137 }
141138
142- public async Task < int > AsyncUnnestExample ( NpgsqlConnection conn )
139+ public static async Task < int > UnnestExample ( NpgsqlConnection conn )
143140 {
144141 Console . WriteLine ( "Running AsyncUnnestExample" ) ;
145142
146143 // Submit DDL, create database schema.
147- using ( var cmd = new NpgsqlCommand ( "DROP TABLE IF EXISTS testdrive.unnest" , conn ) )
144+ await using ( var cmd = new NpgsqlCommand ( "DROP TABLE IF EXISTS testdrive.unnest" , conn ) )
148145 {
149146 await cmd . ExecuteNonQueryAsync ( ) ;
150147 }
151148
152- using ( var cmd2 = new NpgsqlCommand (
153- connection : conn ,
154- cmdText : "CREATE TABLE IF NOT EXISTS testdrive.unnest (id int, name text)"
155- ) )
149+ await using ( var cmd2 = new NpgsqlCommand (
150+ connection : conn ,
151+ cmdText : "CREATE TABLE IF NOT EXISTS testdrive.unnest (id int, name text)"
152+ ) )
156153 {
157154 await cmd2 . ExecuteNonQueryAsync ( ) ;
158155 }
@@ -170,16 +167,16 @@ public async Task<int> AsyncUnnestExample(NpgsqlConnection conn)
170167 await cmd3 . ExecuteNonQueryAsync ( ) ;
171168
172169 // Flush data.
173- using ( var cmd = new NpgsqlCommand ( "REFRESH TABLE testdrive.unnest" , conn ) )
170+ await using ( var cmd = new NpgsqlCommand ( "REFRESH TABLE testdrive.unnest" , conn ) )
174171 {
175172 cmd . ExecuteNonQuery ( ) ;
176173 }
177174
178175 // Query back data.
179176 var resultCount = - 1 ;
180- using ( var cmd = new NpgsqlCommand ( "SELECT COUNT(*) FROM testdrive.unnest" , conn ) )
177+ await using ( var cmd = new NpgsqlCommand ( "SELECT COUNT(*) FROM testdrive.unnest" , conn ) )
181178 {
182- using ( var reader = cmd . ExecuteReader ( ) )
179+ await using ( var reader = cmd . ExecuteReader ( ) )
183180 {
184181 await reader . ReadAsync ( ) ;
185182 resultCount = reader . GetInt32 ( 0 ) ;
0 commit comments