Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ado-net « web - github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: cd6ea65cfe42786a88044795167c06f4ab24123f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
* ADO.NET

<p>Mono's ADO.NET Developers:

<table border=1>

<tr>
	<td><b>Developer</b></td>
	<td><b>Email</b></td>
	<td><b>Contribution</b></td>
</tr>

<tr>
	<td>Rodrigo Moya</td>
	<td>rodrigo -AT-<br> ximian.comNOSPAM</td>
	<td>ADO.NET coordinator,<br> OLE DB provider,<br> and tests</td>
</tr>

<tr>
	<td>Daniel Morgan</td>
    <td>danmorg -AT-<br> sc.rr.comNOSPAM</td>
    <td>MySQL, PostgreSQL, <br>Oracle providers,<br> and tests</td>
</tr>

<tr>
	<td>Tim Coleman</td>
	<td>tim -AT- <br>timcoleman.comNOSPAM</td>
	<td>Microsoft SQL Server, <br>Sybase, <br>TDS providers,<br> Oracle, 
		<br>and tests.<br>
		He has
	    contributed <br>to other parts <br>of Mono too, <br>such as, 
	    <br>EnterpriseServices,
	    XML, <br>and WebServices.</td>
</tr>

<tr>
	<td>Brian Ritchie</td>
	<td>brianlritchie -AT-<br> hotmail.comNOSPAM</td>
	<td>ODBC provider <br>and the ProviderFactory <br>in Mono.Data</td>
</tr>

<tr>
	<td>Vladimir Vukicevic</td> 
	<td>vladimir -AT-<br> pobox.comNOSPAM</td>
	<td>SQL Lite provider. <br> He has contributed to GTK# <br>and mPhoto too.</td>
</tr>

<tr>
	<td>Christopher Bockner</td>
	<td>cleared -AT-<br> rogers.comNOSPAM</td>
	<td>IBM DB2 Universal <br>Database provider</td>
</tr>

<tr>
	<td>Ville Palo</td>
	<td>vi64pa -AT-<br> koti.soon.fiNOSPAM</td>
	<td>XML stuff <br>in System.Data <br>including DataSet <br>
	   and XmlDataDocument, <br>and tests</td>
</tr>

<tr>
	<td>Gonzalo Paniagua Javier</td>
	<td>gonzalo -AT-<br> ximian.comNOSPAM</td>
	<td>Integration between <br>System.Web and <br>System.Data</td>
</tr>

<tr>
	<td>Gaurav Vaish</td>
	<td>gvaish -AT-<br> iitk.ac.inNOSPAM</td>
	<td>Web controls</td>
</tr>

<tr>
	<td>Phillip Jerkins</td>
	<td>Phillip.Jerkins -AT-<br> morgankeegan.comNOSPAM</td>
	<td>Named Instance support <br>in System.Data.SqlClient</td>
</tr>

</table>

** Bugs and Feature Requests

<ul>

	<li>Bugs with Mono or any data provider in Mono should be reported 
	    in Mono's Bugzilla <a href="http://bugzilla.ximian.com/">here</a>.  If you
	    do not have a Bugzilla user account, it is free 
	    and easy to create 
	    one <a href="http://bugzilla.ximian.com/createaccount.cgi">here</a>.</li>
	
	<li>Any RFE (Request For Enhancement) for features missing or new functionality
	    should be entered as a bug in Bugzilla too</li>

</ul>
	
** ADO.NET Data Providers
	
<p>List of ADO.NET Data Providers working in Mono:
			
<ul>
	<li><a href="http://www.go-mono.com/ibmdb2.html">IBM DB2 Universal Database</a></li>
	<li><a href="http://www.go-mono.com/mysql.html">MySQL</a></li>
	<li><a href="http://www.go-mono.com/odbc.html">ODBC</a></li>
	<li><a href="http://www.go-mono.com/oracle.html">Oracle</a></li>
	<li><a href="http://www.go-mono.com/oledb.html">OLE DB</a></li>
	<li><a href="http://www.go-mono.com/postgresql.html">PostgreSQL</a></li>
	<li><a href="http://www.go-mono.com/sqlclient.html">Microsoft SQL Server</a></li>
	<li><a href="http://www.go-mono.com/sqlite.html">SQL Lite</a></li>
	<li><a href="http://www.go-mono.com/sybase.html">Sybase</a></li>
	<li><a href="http://www.go-mono.com/tdsclient.html">TDS Generic</a></li>
</ul>

<p>Providers which we do not have, but we would like to have.  Currently,
	some of these databases are supported via the ODBC or OLE DB providers.

<ul>
	<li><a href="http://msdn.microsoft.com/library/en-us/dnsql2k/html/sqlxml_intromanagedclasses.asp?frame=true">Managed Classes for SqlXml</a> which is
		a .NET data provider for retrieving XML data from a Microsoft SQL Server 2000 database.  The System.Data.SqlClient provider
		in Mono can be used as a starting point at mcs/class/System.Data/System.Data.SqlClient.</li>
	<li><a href="http://www.hughes.com.au/">miniSQL</a></li>
	<li><a href="http://www.sleepycat.com/">BerkeleyDB (Sleepycat)</a></li>
	<li><a href="http://www.sapdb.org/">SapDB</a></li>
	<li><a href="http://www-3.ibm.com/software/data/informix/">Informix</a></li>	
	<li><a href="http://msdn.microsoft.com/vfoxpro/">Foxpro</a></li>	
	<li>Microsoft Access - could be done by creating C# bindings to <a href="http://mdbtools.sourceforge.net">MDB Tools</a></li>
	<li>dbase or xbase type database files</li>
	<li>Others are welcome</li>
</ul>

<p>External Projects that have created ADO.NET Providers that work on Mono:

<ul>

	<li><a href="http://www.go-mono.com/firebird.html">Firebird Interbase</a></li> is a
	   Firebird SQL Managed data provider. It can be used with Interbase databases too.  It
	   is written in 100%C# and does not require a client library. Works on .NET and Mono.</a>
	<li><a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">Npgsql</a> is a 
	   PostgreSQL Managed data provider written 
	   in 100% C#, does not require a client library, and works on .NET and Mono</li>
	<li><a href="http://sourceforge.net/projects/mysqlnet/">MySQLNet</a> is a 
	   MySQL Managed data provider written in 100% C#, does not
	   require a client library, and works on .NET and Mono</li>
</ul>

** Tools

<p>Some tools that can be used for ADO.NET and other technologies (ASP.NET, XML, etc).

<ul>	
		<li><b>SQL# CLI</b> - a SQL query tool with a command-line interface.
		    It can be used to enter and execute SQL statements or 
		    execute a batch of SQL commands from a file.   It can
		  be used to test connection strings, connect to various ADO.NET
		  providers, save output to text, html, or xml.  It is a work-in-progress.
		  The SQL# CLI is distributed with the
		  Mono runtime and class libraries as an executable assembly sqlsharp.exe.
		  The source to SQL# CLI can be found in the mcs source at
		  mcs/tools/SqlSharp/SqlSharpCli.cs
		  </li>
		  
		<li><p><b>SQL# GUI - a graphical SQL query tool</b> allows a user
		  to enter SQL commands in a top panel which is a text editor.  It
		  has a toolbar and menu for various tasks, such as, executing
		  SQL commands one-at-a-time or in a batch.  The results would appear
		  in a bottom panel in a grid or could be saved to a file (xml, html, csv).
		  Also, the bottom panel would allow logging of SQL command executed.
		  Currently, there is a <a href="http://go-mono.com/images/sqlsharp.png">SQL# For GTK#</a> which
		  provides a GUI interface using the <a href="http://gtk-sharp.sourceforge.net">Gtk#</a> toolkit.  SQL# For GTK#
		  is a work-in-progress and can be found in the mcs source at 
		  mcs/tools/SqlSharp/gui/gtk-sharp</li>  
</ul>

<p>Tools we would like to have, but they have not been created yet:

<ul>
		<li><b>XML Schema Definition tool</b> <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpconxmlschemadefinitiontoolxsdexe.asp">xsd.exe</a> needs 
			to be created.  Maybe this TODO item should be at the System.XML web page instead.
			
			<ul>
				<li>This tool
					would work like the xsd.exe tool included with 
					the .NET Framework.  The Xsd.exe tools has the
					following uses:
					<ul>
					<li><b>XDR to XSD</b> - used to generate an XML schema from an XDR (XML Data Reduced schema) file. 
						XDR was used by Microsoft prior to XSD becoming a W3C recommendation.  So, this needs
						to be supported for legacy reasons</li>
					<li><b>XML to XSD</b> - used to generate an XML schema from an XML file</li> 
					<li><b>XSD to DataSet</b> - used to generate DataSet classes from an XSD schema file.  The
						DataSet classes created can then be used with XML data</li>
					<li><b>XSD to Classes</b> - used to generate classes from an XSD schema file. The 
					    classes created can be used with System.XML.Serialization.XMLSerializer 
					    to read and write XML code that follows the schema</li>
					<li><b>Classes to XSD</b> - used to generate an XML schema 
						from type(s) in a assembly file. The 
						XML schema created by the tool defines the XML format used 
						by System.XML.Serialization.XMLSerializer</li>
					</ul>
				<li>Xsd.exe is used to manipulate XML schemas that 
					follow the http://www.w3.org/XML/Schema">XML Schema Definition (XSD)</a> language 
					recommended	by the <a href="http://w3.org/">World Wide Web Consortium (W3C)</a></li>
					
				<li>How this tool could be created:
					<ul>
						<li>Write xsd.exe in C# and run on Mono</li>
						<li>Make sure we have XML Schema support in System.Xml.Schema.  Currently,
						it is wrapped around libxlst</li>
						<li>XML serialization support in System.Data classes</li>
						<li>Create the TypedDataSetGenerator class in System.Data</li>
						<li>Using CodeDOM or Reflection.Emit to create code</li>
						<li>Make sure DataSet, XmlDataDocument, and related classes 
						are implemented fully</li>
					</ul>
				</li>	
				
			</li>
			</ul>
		</li>
		
		<li><b>Application XML Configuration File Editor</b> - a tool
		to create and edit an application configuration file, such as,
		we have a .net application named Accouting.exe, the tool could edit
		the application configuration file Accounting.exe.config so a user could
		connect to the database used by the program.  This tool has not
		been created.</li>
		
		<li><b>Configuration Command-Line and GUI Tools for ADO.NET</b>.  
		  These tools have not been started.  The tools would be written in
		  C# and run on Mono. The
		  configuration tool can be used to do the following:
		  <ul> 
			<li>bebased on the Application XML Configuration File Editor</li>
			<li>setup DSNs for the ODBC and OLE-DB
				providers and configurations for 
				their underlying libraries (unixODBC and libgda)</li>
		    <li>setup configurations for the Mono.Data.ProviderFactory
				that Brian Ritchie created</li>
		    <li>setup native database client library configurations too, such as,
				freetds.conf for Microsoft SQL Server and Sybase</li>
		  </ul>
		</li>

</ul>

** Extra Classes in Mono ADO.NET

 <p>An ADO.NET <a href="http://www.go-mono.com/provider-factory.html">Provider Factory</a> 
    was created by Brian Ritchie.  The 
	Provider Factory is a way to dynamically create
	connections, commands, parameters, and data adapters based on configuration 
	information.
	
** Current Status

	<p>Various ADO.NET Providers have been created at various stages of 
	development including: 
	Firebird/Interbase, IBM DB2 Universal Database, MySQL, ODBC, OLE DB, Oracle,
	PostgreSQL, SQL Lite, Sybase, Microsoft SQL Server, and TDS Generic.  
	See their respective web page for more information.
	
	<p><b>Data Relations</b> via DataRelation, DataRelationCollection, and
	other classes have not been implemented
	
	<p><b>Constraints</b> need lots of work
	
	<p><b>XML Schema Definition tool</b> xsd.exe that is included
	in the .NET Framework has not been created for Mono
	
	<p><b>TypeDataSetGenerator</b> needs to be stubbed and implemented.
		
	<p><b>DataSet, DataAdaptor, DataTable, DataRelation, DataRow, DataColumn,
	DataColumnCollection, DataRowCollection, and others</b> need more work.  There are
	many classes that are just stubs and need to be implemented.  Ville Palo has been
	doing much testing here.

	<p><b>XML support in System.Data</b> needs work.  This involves working on
	the classes: DataSet, XmlDataDocument, and the method ExecuteXmlReader() that
	exists in a provider's class that implements IDbCommand, and others.
	Stuart Caborn has started the XML support in a DataSet.  Tim Coleman started
	XML support in the ExecuteXmlReader() in a SqlCommand.  Ville Palo has been
	heavily modifying DataSet, XmlDataDocument, and other classes for reading
	and writing XML.  XML Serialization support in DataSet needs to be implemented.
		
	<p><b>Integration with ASP.NET</b> has been created.  Data binding of
	a DataTable in a DataSet to a System.Web.UI.WebControls.DataGrid works.  Data binding
	of other types works too.
	
	<p><b>Database Access from ASP.NET</b>:
	<ul>
		<li>Take a look at xsp in cvs and look at the examples in test: dbpage1.aspx
		and dbpage2.aspx:
			<ul>
				<li>Notice that the namespace System.Data is imported via <b>import</b></li>
				<li>A NameValueCollection is gotten using ConfigurationSettings.AppSetings. These
				settings are gotten from the file server.exe.config which is a XML file.   The XML
				file has a section appSettings.  In the appSettings section, you have keys 
				for DBProviderAssembly, DBConnectionType, and DBConnectionString.
				<ul>
					<li><b>DBProviderAssembly</b> is the assembly of the ADO.NET provider.  
					      For example: 
					      "Mono.Data.PostgreSqlClient"</li>
					<li><b>DBConnectionType</b> is the System.Type of the class that 
					      implements System.Data.IDbConnection that is found
				          in the DBProviderAssembly.  
				          For example: 
				          "Mono.Data.PostgreSqlClient.PgConnection"</li> 
				    <li><b>DBConnectionString</b> is the ConnectionString to set to the
				          IDbConnection object to use in opening a connection to a data source.
				          For Example: 
				          "hostaddr=127.0.0.1;user=monotest;password=monotest;dbname=monotest"</li>
				</ul>
				<li>The function GetConnectionData() gets the database provider assembly, connection type,
				and connection string parameters if they exist; otherwise, it uses default values.  This is
				done during the loading of the web page.</li>
				<li>With the connection parameters, the assembly is loaded, the connection type is verified that
				it implements IDbConnection and an instance of the class can be created, creates a instance
				of the class, sets the connection string, and opens the connection.</li>
			</ul>
		</li>
	</ul>
	
	<p><b>Integration with Windows.Forms</b> has not been started, such as, data binding 
	to a System.Windows.Forms.DataGrid.  This may involve implementing many classes
	in System.Windows.Forms and System.Data.
	
	<p><b>Integration with <a href="http://gtk-sharp.sourceforge.net/">GTK#</a></b> 
	has not been started, such as, data binding
	to a GtkTreeView.  This may involve creating new classes
	to go between the glist data model and the ADO.NET data model.
	Mike Kestner or Rachel Hestilov would be the best people to ask for help on GTK#.
	
	<p><b>Integration with QT#</b> has not been started.  Any information on 
	how this can be done is appreciated.  Adam Treat would be the best 
	person to ask about QT#.
	
	<p><b>Building System.Data</b>
	
	<p>The System.Data.dll gets built with the rest of the class library.
	To compile the System.Data.dll assembly separately, you need:

	<b>On Unix</b>

	<ul>
		* update your mono sources. Be sure you have latest mcs.exe
		  and .dll's, since there have been many fixes needed for
		  compilation on Linux.

		* compile System.Data.dll:
<pre>
 cd mcs/class/System.Data<br>
 mcs --target library -o \
    System.Data.dll @list
</pre>
	</ul>

	<b>On Windows</b>

	<ul>
		* update your mono sources. Be sure you have latest mcs.exe
		  and .dll's.  You can use the same method as Linux, 
		  or you can use NAnt.

		* To use NAnt:

<pre>
 cd mcs/class/System.Data
 ../../nant/NAnt.exe
</pre>
			
		* This will automatically copy the System.Data.dll to Test.
		  If you need to do a clean for the System.Data.dll assembly,<br><br>

<pre>
 cd mcs/class/System.Data
 ../../nant/NAnt.exe clean 
</pre>
	</ul>

** Testing

<ul>
	<li>Testing connection-oriented classes are done 
	via the provider specific tests
	found in the mcs source at mcs/class</br>
		<table border=1>	
			<tr>
				<td><b>Name</b></td>
				<td><b>Assembly /</br> Namespace</b></td>
				<td><b>Test</b></td>	
			</tr>		
			
			<tr>
				<td>Microsoft</br> SQL</br> Server</br></td>
				<td>System.Data /</br> System.Data.SqlClient</td>
				<td>SqlTest.cs at</br> System.Data/Test</td>
			</tr>
			
			<tr>
				<td>PostgreSQL</br> (Mono)</td>
				<td>Mono.Data.PostgreSqlClient /</br> Mono.Data.PostgreSqlClient</td>
				<td>PostgresTest.cs at</br> System.Data/Test</td>
			</tr>

			<tr>
				<td>MySQL</br> (Mono)</td>
				<td>Mono.Data.MySql /</br> Mono.Data.MySql</td>
				<td>MySqlTest.cs at</br> Mono.Data.MySql/Test</td>
			</tr>

			<tr>
				<td>Oracle</br> (Mono)</td>
				<td>System.Data.OracleClient /</br> System.Data.OracleClient</td>
				<td>TestOracleClient.cs at</br> System.Data.OracleClient</td>
			</tr>

			<tr>
				<td>ODBC</br> (Mono)</td>
				<td>System.Data.OracleClient /</br> System.Data.OracleClient</td>
				<td>TestOracleClient.cs at</br> System.Data.OracleClient</td>
			</tr>
			
		</table>
	

	<li><a href="http://www.go-mono.com/testing.html">Testing non-connection classes</a> are 
	done via mono's modified version of NUnit.
		<ul>
			<li>To run all the NUnit tests for Mono, you need the mcs source.  cd to the root
			of the mcs source.  To run it:
				<ul>
					<li>On Linux: make -f makefile test</li>
					<li>On Windows: make test</li>
				</ul>
			</li>
			<li>If you just want to run the NUnit tests for System.Data, you would cd into
			the mcs source at class/System.Data/Test and run it:
				<ul>
					<li>On Linux: make -f makefile test</li>
					<li>On Windows: make test</li>
				</ul>
			</li>
		</ul>
	</li>
		
</ul>