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: 0095d79ef79996374030641fce45c5c8a01272ac (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
* ADO.NET

** Data Access in Mono

<ul>
	<li>Today, our goal is to be compatible with  .NET 1.1 and .NET 1.0.  We also would like
   to extend data access beyond what is included with .NET 1.0 and .NET 1.1,
   such as, include access to more databases, such as, PostgreSQL and MySQL,
   but also provide classes that help in creating data source-agnostic code, such as, 
   Mono.Data.ProviderFactory.</li>
   
   <li>In the future, we would like to be compatible with .NET 1.2. This includes features 
   like <a href="http://longhorn.msdn.microsoft.com/lhsdk/ndp/daconworkingwithobjectspacesarchitecture.aspx">ObjectSpaces</a></li>
	
</ul>

** 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 requests for new features or missing functionality
	    can entered as a bug in Bugzilla too</li>

</ul>
	
** ADO.NET Data Providers
	
<p>Mono has many ADO.NET Data Providers to get you connected:
			
<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">Older Microsoft SQL Server and Sybase databases</a></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>sqlsharp.exe
		<ul>
			<li>SQL# is a command line query tool included with Mono to enter and execute SQL statements</li>
		</ul>
	</li>
	<li>xsd.exe
		<ul>
			<li>XML Schema Definition tool</li>
				<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>
		</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.
	
** Database Access from ASP.NET
	<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: 
					      "ByteFX.Data"</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: 
				          "ByteFX.Data.MySqlConnection"</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>

** 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> (Npgsql)</td>
				<td>Npgsql /</br> Npgsql</td>
				<td>*.cs at</br> Npgsql/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/Test</td>
			</tr>

			<tr>
				<td>ODBC</br> (Mono)</td>
				<td>System.Data.Odbc /</br> System.Data</td>
				<td>OdbcTest.cs (to connect to MS SQL Server)at</br> System.Data/Test</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>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>make test</li>
				</ul>
			</li>
		</ul>
	</li>
		
</ul>