2 // TestSqlConnection.cs - tests connection via ServerName:
\r
4 // "Server=hostname\\instance"
\r
5 // "Server=hostname,port"
\r
7 // Test Connections for SqlClient, SybaseClient, and TdsClient
\r
10 // Daniel Morgan <danmorg@sc.rr.com>
\r
12 // Copyright (C) Daniel Morgan, 2003
\r
14 // To build this test on Linux:
\r
15 // mcs TestSqlConnection.cs -r System.Data.dll \
\r
16 // -r Mono.Data.SybaseClient.dll -r Mono.Data.TdsClient.dll
\r
18 // To build this test on Windows via Cygwin:
\r
19 // mono C:/cygwin/home/MyHome/mono/install/bin/mcs.exe TestSqlConnection.cs \
\r
20 // -lib:C:/cygwin/home/MyHome/mono/install/lib -r System.Data.dll \
\r
21 // -r Mono.Data.SybaseClient.dll -r Mono.Data.TdsClient.dll
\r
24 //#define IncludeSybaseAndTdsClient
\r
28 using System.Data.SqlClient;
\r
29 #if IncludeSybaseAndTdsClient
\r
30 using Mono.Data.TdsClient;
\r
31 using Mono.Data.SybaseClient;
\r
32 #endif // IncludeSybaseAndTdsClient
\r
34 public class TestSqlConnection
\r
36 public static void Main(string[] args)
\r
38 Console.WriteLine("Start TestSqlConnection.");
\r
39 if (args.Length != 6 && args.Length != 7) {
\r
41 "\nUsage: mono TestSqlConnection.exe Client Table Column Server Database UserID [Password]\n\n" +
\r
42 #if IncludeSybaseAndTdsClient
\r
43 "\tClient is one of the following: SqlClient, TdsClient, or SybaseClient\n" +
\r
45 "\tClient is: SqlClient. No support for TdsClient nor SybaseClient\n" +
\r
46 #endif // IncludeSybaseAndTdsClient
\r
47 "\tTable is the name of the database table to select from\n" +
\r
48 "\tColumn is the name of the column in the Table to select from\n" +
\r
49 "\tServer is the SQL Server to connect. Use one of the following forms:\n" +
\r
50 "\t\tHOSTNAME Ex: MYHOST\n" +
\r
51 "\t\tHOSTNAME,port Ex: MYHOST,1433\n" +
\r
52 "\t\tHOSTNAME\\\\instance Ex: MYHOST\\\\NETSDK Note: only works with SqlClient\n" +
\r
53 "\tDatabase is the name of the database to use\n" +
\r
54 "\tUser ID is the user's User ID\n" +
\r
55 "\tPassword is the user's Password Note: if ommitted, a blank password is used\n" +
\r
57 "\tEx 1: SqlClient employee lname MYHOST pubs myuserid mypassword\n" +
\r
58 "\tEx 3: SqlClient employee lname MYHOST,1443 pubs myuserid mypassword\n" +
\r
59 "\tEx 2: SqlClient Products ProductName MYHOST\\\\NETSDK myuserid mypassword\n" +
\r
60 "\tEx 4: SqlClient employee lname MYHOST pubs myuserid\n" +
\r
61 "\tEx 5: TdsClient sometable somecolumn MYHOST test myuserid mypassword\n" +
\r
62 "\tEx 6: SybaseClient sometable somecolumn MYHOST test myuserid mypassword\n");
\r
67 string client = args[0];
\r
68 string tableName = args[1];
\r
69 string columnName = args[2];
\r
71 string server = args[3];
\r
72 string database = args[4];
\r
73 string userid = args[5];
\r
74 string password = "";
\r
75 if (args.Length == 7)
\r
81 Console.WriteLine("\nClient: " + client);
\r
82 Console.WriteLine("Table Name: " + tableName);
\r
83 Console.WriteLine("Column Name: " + columnName);
\r
84 Console.WriteLine("Server: " + server);
\r
85 Console.WriteLine("Database: " + database);
\r
86 Console.WriteLine("User ID: " + userid);
\r
87 Console.WriteLine("Password: " + password);
\r
89 sql = "SELECT " + columnName + " FROM " + tableName;
\r
92 "Server=" + server + ";" +
\r
93 "Database=" + database + ";" +
\r
94 "User ID=" + userid + ";" +
\r
95 "Password=" + password + ";";
\r
97 Console.WriteLine("\nConnectionString: " + constr);
\r
98 Console.WriteLine("SQL: " + sql);
\r
100 Console.WriteLine("\nCreating Connection...");
\r
102 IDbConnection con = null;
\r
103 switch (client.ToUpper()) {
\r
105 con = new SqlConnection();
\r
107 #if IncludeSybaseAndTdsClient
\r
109 con = new TdsConnection();
\r
111 case "SYBASECLIENT":
\r
112 con = new SybaseConnection();
\r
115 Console.WriteLine("Invalid client: " + client + "\nUse SqlClient, TdsClient, or SybaseClient");
\r
119 Console.WriteLine("Invalid client: " + client + "\nUse SqlClient. No support for TdsClient nor SybaseClient.");
\r
124 Console.WriteLine("set connection string...");
\r
125 con.ConnectionString = constr;
\r
126 Console.WriteLine("open connection...");
\r
130 catch(SqlException se) {
\r
131 Console.WriteLine("SqlException caught");
\r
132 Console.WriteLine("Message: " + se.Message);
\r
133 Console.WriteLine("Procedure: " + se.Procedure);
\r
134 Console.WriteLine("Class: " + se.Class);
\r
135 Console.WriteLine("Number: " + se.Number);
\r
136 Console.WriteLine("Source: " + se.Source);
\r
137 Console.WriteLine("State: " + se.State);
\r
138 Console.WriteLine("Errors:");
\r
139 foreach(SqlError error in se.Errors) {
\r
140 Console.WriteLine(" SqlError:");
\r
141 Console.WriteLine(" Message: " + se.Message);
\r
142 Console.WriteLine(" Line Number: " + se.LineNumber);
\r
143 Console.WriteLine(" Procedure: " + se.Procedure);
\r
144 Console.WriteLine(" Class: " + se.Class);
\r
145 Console.WriteLine(" Number: " + se.Number);
\r
146 Console.WriteLine(" Server: " + se.Server);
\r
147 Console.WriteLine(" Source: " + se.Source);
\r
148 Console.WriteLine(" State: " + se.State);
\r
150 Console.WriteLine("StackTrace: " + se.StackTrace);
\r
151 Console.WriteLine("TargetSite: " + se.TargetSite);
\r
152 Exception ie = se.InnerException;
\r
154 Console.WriteLine("InnerException:");
\r
155 Console.WriteLine(" Message: " + se.Message);
\r
156 Console.WriteLine(" Class: " + se.Class);
\r
157 Console.WriteLine(" Number: " + se.Number);
\r
158 Console.WriteLine(" Source: " + se.Source);
\r
159 Console.WriteLine(" State: " + se.State);
\r
160 Console.WriteLine(" StackTrace: " + se.StackTrace);
\r
161 Console.WriteLine(" TargetSite: " + se.TargetSite);
\r
165 Console.WriteLine("Creating command...");
\r
166 IDbCommand cmd = con.CreateCommand();
\r
167 Console.WriteLine("set SQL...");
\r
168 cmd.CommandText = sql;
\r
169 Console.WriteLine("execute reader...");
\r
170 IDataReader reader = cmd.ExecuteReader();
\r
171 Console.WriteLine("read first row...");
\r
172 if(reader.Read()) {
\r
173 Console.WriteLine(" Value: " + reader[columnName].ToString());
\r
176 Console.WriteLine(" No data returned. Or either, no permission to read data.");
\r
179 Console.WriteLine("Clean up...");
\r
187 Console.WriteLine("Done.");
\r