Fix.
[mono.git] / doc / tdsclient
1 * TDS Generic Provider
2
3 <ul>
4         <li>ADO.NET Provider for older Sybase and Microsoft SQL Server databases</li>
5
6         <li>Exists in namespace Mono.Data.TdsClient and assembly Mono.Data.TdsClient</li>
7         
8         <li>Created by Tim Coleman</li>
9         
10         <li>Used the <a href="http://www.freetds.org/">FreeTDS</a> and 
11         <a href="http://jtds.sourceforge.net/">jTDS</a> projects as resources.</li>
12         
13         <li>Implemented in 100% C#</li>
14         
15         <li>Is similar to the Mono.Data.SybaseClient and System.Data.SqlClient providers.</li>
16         
17         <li>Requires the assembly Mono.Data.Tds.dll which implements the TDS protocol in 100% C#.</li>
18         
19         <li>Uses TDS Protocol Version 4.2 by default</li>
20         
21         <li>Does not support trusted connections</li>
22 </ul>
23
24 ** Current Status
25
26
27 <ul>
28         <li>Only builds on Windows currently due to mcs does not support modules and mcs
29         has problems with code that is internal.</li>
30         
31         <li>Able to connect to Microsoft SQL Server and Sybase databases</li>
32         
33         <li>SQL commands can be executed
34         via ExecuteNonQuery() of a TdsCommand.</li>
35         
36         <li>SQL aggregates can be executed and a single row and single column
37         result can be retrieved via ExecuteScalar() of a TdsCommand</li>
38         
39         <li>SQL queries can be executed via ExecuteReader() and results 
40         can be retrieved via TdsDataReader.</li>
41         
42         <li>a DataTable with schema info about a result can be gotten via GetSchemaTable()
43         in a TdsDataReader</li>
44         
45         <li>Data can be filled in a DataTable in a DataSet via a TdsDataAdapter</li>
46 </ul>
47
48 ** Action plan
49
50 <ul>
51         <li>Connection timeouts is being developed now.</li>
52
53         <li>TODO</li>
54 </ul>
55
56 ** Testing
57
58 <ul>
59         <li>Have a working mono and mcs installed</li>
60         
61         <li>Have access to a Sybase or Microsoft SQL Server database 
62         or either download it:
63                 <ul>
64                         <li><a href="http://www.microsoft.com/sql/default.asp">Microsoft SQL Server</a></li>
65                         <li><a href="http://www.sybase.com/downloads">Sybase</a></li>
66                 </ul>
67         </li>
68         <li>If using Microsoft SQL Server 2000, make sure
69         you are using at least Service Pack 3 for Microsoft SQL Server 2000</li>
70         
71         <li>Located at mcs/class/System.Data/Test is a test for System.Data.SqlClient
72         named SqlTest.cs and you could use this as a basis for your test.</li>
73         
74         <li>C# Example:
75 <pre>
76  using System;
77  using System.Data;
78  using Mono.Data.TdsClient;
79  
80  public class Test 
81  {
82     public static void Main(string[] args)
83     {
84        string connectionString = 
85           "Server=localhost;" +
86           "Database=pubs;" +
87           "User ID=myuserid;" +
88           "Password=mypassword;";
89        IDbConnection dbcon;
90        dbcon = new TdsConnection(connectionString);
91        IDbCommand dbcmd = dbcon.CreateCommand();
92        string sql = 
93            "SELECT fname, lname " +
94            "FROM employee";
95        dbcmd.CommandText = sql;
96        IDataReader reader = dbcmd.ExecuteReader();
97        while(reader.Read()) {
98             string FirstName = reader["fname"];
99             string LastName = reader["lname"];
100             Console.WriteLine("Name: " + 
101                  FirstName + " " + LastName);
102        }
103        // clean up
104        reader.Close();
105        reader = null;
106        dbcmd.Dispose();
107        dbcmd = null;
108        dbcon.Close();
109        dbcon = null;
110     }
111  }
112 </pre>
113         </li>
114         <li>Building C# Example:
115         <ul>
116                 <li>Save the example to a file, such as, TestExample.cs</li>
117                 <li>Build on Linux:
118 <pre>
119         mcs TestExample.cs -r System.Data.dll \
120             -r Mono.Data.TdsClient.dll
121 </pre>
122                 </li>
123                 <li>Build on Windows via Cygwin:
124 <pre>
125         mono C:/cygwin/home/MyHome/mono/install/bin/mcs.exe \
126              TestExample.cs \
127              -lib:C:/cygwin/home/MyHome/mono/install/lib \
128              -r System.Data.dll -r Mono.Data.TdsClient.dll
129 </pre>
130                 </li>
131         </ul>
132         </li>
133         <li>Running the Example:
134 <pre>
135 mono TestExample.exe
136 </pre>
137         </li>
138 </ul>
139