2008-01-16 Everaldo Canuto <ecanuto@novell.com>
[mono.git] / web / sqlclient
index d17f4695593ad19ad80360d82099f92750c071a5..eca4906cbe342376673bdcb558ec834b133e1928 100755 (executable)
 
 
 <ul>
-       <li>Able to connect to Microsoft SQL Server 7/2000 databases</li>
+
+       <li>Connect to Microsoft SQL Server 7/2000 databases via SQL Server authentication and NT Authentication.</li>
        
        <li>Connection pooling works.</li>
        
-       <li>Stored Procedures work</li>
+       <li>Stored Procedures work.</li>
        
        <li>Parameters work.</li>
        
        
        <li>Data can be filled in a DataTable in a DataSet via a SqlDataAdapter</li>
        
-       <li>Uses TDS Protocol Version 7.0</li>
-       
-       <li><a href="http://www.go-mono.com/tds-providers.html">Design of the Microsoft SQL Server, Sybase, and TDS Providers in Mono</a></li>
-       
        <li>Works in the SQL# command-line and GTK# GUI version</li>
 </ul>
 
 ** Action plan
 
 <ul>
-       <li>Connection timeouts is being developed now</li>
        
-       <li>Needs more testing</li>
-       
-       <li>Would like to figure out how to connect via Trusted_Connection or Integrated Security</li>
+       <li>Needs more testing and fixing bugs</li>
        
        <li>Start work on TDS Protocol Version 8.0 support</li>
+       
+       <li>Add support for the .NET Framework 2.0 (Whidbey)</li>
+       
+       <li>Add support for Microsoft SQL Server 2005 (Yukon) support</li>
 
 </ul>
 
                </ul>
        </li>
        
-       <li>If using Microsoft SQL Server 2000, make sure
+       <li><b>IMPORTANT:</b> If using Microsoft SQL Server 2000, make sure
        you are using at least Service Pack 3 for Microsoft SQL Server 2000.  If using
-       MSDE 2000, make sure you have the special Service Pack 3 for MSDE 2000.</li>
+       MSDE 2000, make sure you have the special Service Pack 3 for MSDE 2000.  You
+       can get it from <a href="http://www.microsoft.com/sql/downloads/2000/sp3.asp">here</a></li>
        
        <li>For those that only have MSDE installed.  You can change the authentication mode \r
        from Windows Only Authentication to SQL Server and Windows Authentications (also knows as Mixed-mode authentication)\r
        via the <a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;Q322336&sd=tech#4">registry</a></li>.  It is\r
        the LoginMode you need to change.  By default,\r
-       MSDE is installed with Windows Only Authentication. For SqlClient to work with MSDE, you will\r
-       need to change the setting.</a>\r
+       MSDE is installed with Windows Only Authentication. If you want SqlClient to work with MSDE via SQL Server authentication, you will\r
+       need to change the setting. Otherwise, you wil have to use NT Authentication.</a>\r
        \r
        <li>If using MSDE, you might need to create a new user with password.  Give\r
     this user access to various databases in this MSDE instance.  Also, for each\r
        for both MSDE and Microsoft SQL Server.  To change the authentication mode in \r
        Enterprise Mananger, select the instance, right-click on it, and select properites.\r
        The SQL Server properties dialog for that instance will pop up.  Choose the Security\r
-       tab.  Change the authentication from Windows Only to SQL Server and Windows.  If\r
+       tab.  Change the Authentication from Windows Only to SQL Server and Windows.  If\r
        the instance of your database does not show up in Enterprise Manager, Register first\r
        by selecting the Action menu and choosing New SQL Server Registration.</li>\r
 
        <li>Located at mcs/class/System.Data/Test is a test for System.Data.SqlClient
        named SqlTest.cs and you could use this as a basis for your test.</li>
        
-       <li>Mono's SqlClient does not support trusted connections 
-       nor integrated security.  You can not use this when connecting.  You need 
-       to explicitly use a User ID and Password
-       authenticated by SQL Server.</li>
+       <li>If you want to use Integrated Security (aka NT Authentication aka Trusted Connection aka Domain Login), you
+       will need to specify the Domain User ID and Password.  This is because Mono is not integrated with Windows
+       nor SQL Server.</li>
        
-       <li>Has a connection string format:
+       <li>Has a connection string format for SQL Server Authentication:
 <pre>
- Server=hostname;Database=databaseName;User ID=userid;Password=password
+ Server=hostname;
+ Database=databaseName;
+ User ID=sqlServerUserid;
+ Password=sqlServerPassword
 </pre>
        </li>
+       <li>Has a connection string format for NT Authentication:
+<pre>
+ Server=hostname;
+ Database=databaseName;
+ User ID=windowsDomain\windowsUserid;
+ Password=windowsPassword;
+ Integrated Security=SSPI
+</pre>
+       </li>
+
        <li>The Server part can be used three ways:
        
                <table border=1>
                        </tr>
                        
                        <tr>
-                               <td>hostname\\instance</td> <td>Server=MYHOST\\NETSDK</td>
+                               <td>hostname\instance</td> <td>Server=MYHOST\NETSDK</td>
                        </tr>
                </table>
        </li>
        
-       <li>C# Example:
+       <li>C# Example using SQL Server Authentication:
 <pre>
  using System;
  using System.Data;
     public static void Main(string[] args)
     {
        string connectionString = 
-          "Server=localhost;" +
+          "Server=MyServer;" +
           "Database=pubs;" +
-          "User ID=myuserid;" +
-          "Password=mypassword;";
+          "User ID=MySqlServerUserId;" +
+          "Password=MySqlServerPassword;";
        IDbConnection dbcon;
        dbcon = new SqlConnection(connectionString);
        dbcon.Open();
  }
 </pre>
        </li>
+
+       <li>C# Example using NT Authentication (Integrated Security)
+<pre>
+ using System;
+ using System.Data;
+ using System.Data.SqlClient;
+ public class Test 
+ {
+    public static void Main(string[] args)
+    {
+       string connectionString = 
+          "Server=MyServer;" +
+          "Database=pubs;" +
+          "User ID=MyWindowsDomain\\MyWindowsUserid;" +
+          "Password=MyWindowsPassword;" +
+          "Integrated Security=SSPI";
+       IDbConnection dbcon;
+       dbcon = new SqlConnection(connectionString);
+       dbcon.Open();
+       IDbCommand dbcmd = dbcon.CreateCommand();
+       string sql = 
+           "SELECT fname, lname " +
+           "FROM employee";
+       dbcmd.CommandText = sql;
+       IDataReader reader = dbcmd.ExecuteReader();
+       while(reader.Read()) {
+            string FirstName = (string) reader["fname"];
+            string LastName = (string) reader["lname"];
+            Console.WriteLine("Name: " + 
+                 FirstName + " " + LastName);
+       }
+       // clean up
+       reader.Close();
+       reader = null;
+       dbcmd.Dispose();
+       dbcmd = null;
+       dbcon.Close();
+       dbcon = null;
+    }
+ }
+</pre>
+       </li>
+
        <li>Building C# Example:
        <ul>
                <li>Save the example to a file, such as, TestExample.cs</li>
                <li>Build on Linux:
 <pre>
        mcs TestExample.cs -r System.Data.dll
-</pre>
-               </li>
-               <li>Build on Windows via Cygwin:
-<pre>
-       mono C:/cygwin/home/MyHome/mono/install/bin/mcs.exe \
-            TestExample.cs -r System.Data.dll
 </pre>
                </li>
        </ul>