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

mysql « web - github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/web/mysql
blob: 56c5f11295030539380b22e9c7b7b9ccc858c528 (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
* MySQL Data Provider

 <p>There are two ADO.NET providers in Mono 
 for a <a href="http://www.mysql.com/">MySQL</a> database:

<ul>
	<li><a href="http://sourceforge.net/projects/mysqlnet/">ByteFX.Data.MySQLClient</a>
		<ul>
			<li>Written in 100% C#</li>
			<li>Does not require a client library</li>
			<li>Works on Mono and Microsoft .NET</li>
			<li>Requires at least Mono 0.18 and MySQLNet 0.65 for it to work on Mono</li>
			<li>Works in the SQL# command-line and GTK# GUI version</li>
		</ul>
	</li>

	<li>Mono.Data.MySql (deprecated)
		<ul>
			<li>Deprecated in favor of ByteFX.Data.MySQLClient
		
			<li>Written in C# and uses
				the MySQL C Client Library</li>

			<li>Exists in namespace Mono.Data.MySql and assembly Mono.Data.MySql</li>
	
			<li>Works on Windows and Linux via the MySQL client shared library
				(libmySQL.dll on Windows and libmysqlclient.so on Linux).</li>
	    
			<li>Started by Daniel Morgan using 
				<a href="http://www.cybercom.net/~zbrad/DotNet/MySql/">C# Bindings to MySQL</a> from <a href="mailto:zbrad@cybercom.net">Brad Merill</a></li>
		</ul>
	</li>
	
	<li>Bugs with Mono or the data provider should be reported 
	in Mono's Bugzilla <a href="http://bugzilla.ximian.com/">here</a>.  If you
	do not have Bugzilla user account, it is free 
	and easy to 
	create one <a href="http://bugzilla.ximian.com/createaccount.cgi">here</a>.</li>
	
</ul>

 <p><a href="http://www.mysql.com/articles/dotnet/">Exploring MySQL 
 in the Microsoft .NET Environment</a> is an article
 by Mr. Venu who is a MySQL AB developer.</li>

 <p>Testing for Mono's Mono.Data.MySql and ByteFX's ByteFX.Data.MySQLClient is below.
    
** Current Status

 Current Status of the MySQL providers:

<ul>

	<li>ByteFX.Data.MySQLClient
		<ul>
			<li>Build and Runs on Microsoft .NET and Mono</li>
			<li>Works with SQL# (command-line and GTK# GUI versions)</li>
			<li>MySQLCommandBuilder now implemented</li>
			<li>Transaction support now implemented (not all table types support this)</li>
			<li>GetSchemaTable fixed to not use xsd (for Mono)</li>
			<li>Driver is now Mono-compatible</li>
			<li>TIME data type now supported</li>
			<li>More work to improve Timestamp data type handling</li>
			<li>Changed signatures of all classes to match corresponding SqlClient classes</li>
			<li>Protocol compression  using <a href="http://www.icsharpcode.net/OpenSource/SharpZipLib/default.asp">SharpZipLib</a></li>
			<li>Named pipes on Windows now working properly</li>
			<li>Work done to improve Timestamp data type handling</li>
			<li>Implemented IEnumerable on DataReader so DataGrid would work</li>
			<li>Speed increased dramatically by removing bugging network sync code</li>
			<li>Driver no longer buffers rows of data (more ADO.Net compliant)</li>
			<li>Conversion bugs related to TIMESTAMP and DATETIME fields fixed</li>
			
		</ul>
	</li>
	
	<li>Mono.Data.MySql (deprecated)
		<ul>
			<li>Currently, only works with version 3.23.x of MySQL</li>
		
			<li>can connect</li>
	
			<li>can execute non-queries via ExecuteNonQuery()</li>
	
			<li>can execute aggregates via ExecuteScalar() and retrieve the
				single row/single column result</li>
	
			<li>can execute queries and retrieve results using a data reader.</li>
	
			<li>a schema DataTable has been partially 
				implemented which is returned from GetSchemaTable() in MySqlDataReader.</li>
	
			<li>a DataTable in a DataSet can be filled via a MySqlDataAdapter</li>
		
			<li>The shared client libraries 
				between windows version and linux are different: windows has libmySQL.dll 
				while linux has libmysqlclient.so.  This is handled by the 
				file etc/mono/config which is mapped by the mono runtime in knowing
				which native shared library to load.  In cvs, this file is mono/config.in and
				can be modified with a text editor.</li>
	
			<li>Works in the SQL# command-line and GTK# GUI version</li>
		</ul>
	</li>
	
</ul>

** Action plan

 The current plan for the MySQL data providers:
 
 <ul>
	<li>ByteFX.Data.MySQLClient
		<ul>
			<li>Testing and fixes</li>
			<li>Implement missing features</li>
			<li>Only fixes for bugs to build and run MySQLClient on Mono
			will be accepted in mono-cvs.  Most bugs and any new features will
			go into sourceforge cvs.  Anytime there is a release of MySQLClient,
			the source code will be copied from sourceforge cvs to mono-cvs</li>
			<li>Releases of MySQLClient are determined by Reggie Burnett and releases
			of Mono are determined by Miguel de Icaza</li>
			<li>Implement any missing features or fix any bugs in Mono to get new
			features all of MySQLClient to work on Mono</li>
		</ul>
	</li>
	<li>Mono.Data.MySql (deprecated)
		<ul>
			<li>Testing and bug fixes</li>
			<li>Mono.Data.MySql is deprecated and therefore maybe removed
			at a later date.  It will stay in Mono for now because other
			programs maybe using it now.</li>
		</ul>
	</li>
</ul>

** Testing for MySQLNet provider (ByteFX.Data.MySQLClient)

<ul>
	<li>Have access to a MySQL database or download it from
		<ul>
			<li><a href="http://www.mysql.com/downloads/index.html">MySQL AB</a></li>
		</ul>
	</li>
	
	<li>MySQLNet can be gotten from <a href="http://sourceforge.net/projects/mysqlnet/">here</a> and the 
	binary assembly ByteFX.Data.dll needs to be	installed 
	in the same place as the mono class libraries.</li>
	
	<li>MySQLNet requires <a href="http://www.icsharpcode.net/OpenSource/SharpZipLib/default.asp">SharpZipLib</a> which is 
	a Zip Library written in 100% C#.  This is used for compression/decompression of data
	sent/received over the network.  The SharpZipLib binary assembly SharpZipLib.dll should 
	be installed in the same place as the mono class libraries.</li>
	
	<li>Has a ConnectionString format: 
<pre>
"Server=hostname;" +
"Database=database;" +
"User ID=username;" +
"Password=password"
</pre>
	</li>
	<li>C# Example:
<pre>
 using System;
 using System.Data;
 using ByteFX.Data.MySQLClient;
 
 public class Test 
 {
    public static void Main(string[] args)
    {
       string connectionString = 
          "Server=localhost;" +
          "Database=test;" +
          "User ID=myuserid;" +
          "Password=mypassword;";
       IDbConnection dbcon;
       dbcon = new MySQLConnection(connectionString);
       dbcon.Open();
       IDbCommand dbcmd = dbcon.CreateCommand();
       // requires a table to be created named employee
       // with columns firstname and lastname
       // such as,
       //        CREATE TABLE employee (
       //           firstname varchar(32),
       //           lastname varchar(32));
       string sql = 
           "SELECT firstname, lastname " +
           "FROM employee";
       dbcmd.CommandText = sql;
       IDataReader reader = dbcmd.ExecuteReader();
       while(reader.Read()) {
            string FirstName = (string) reader["firstname"];
            string LastName = (string) reader["lastname"];
            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 \
	    -r ByteFX.Data.dll
</pre>
		</li>
		<li>Build on Windows via Cygwin:
<pre>
	mono C:/cygwin/home/MyHome/mono/install/bin/mcs.exe \
	     TestExample.cs \
	     -lib:C:/cygwin/home/MyHome/mono/install/lib \
	     -r System.Data.dll -r ByteFX.Data.dll
</pre>
		</li>
	</ul>
	</li>
	<li>Running the Example:
<pre>
mono TestExample.exe
</pre>
	</li>

</ul>

** Testing for Mono's MySQL provider (Mono.Data.MySql)

<ul>
	<li>Have access to a MySQL database or download it from
		<ul>
			<li><a href="http://www.mysql.com/downloads/index.html">MySQL AB</a></li>
		</ul>
	</li>
	
	<li>Take a look at MySqlTest.cs in mcs/class/Mono.Data.MySql/Test</li>
	<li>On Linux, you may need to make a symbolic link from libmySQL.dll to libmysqlclient.dll</li>
	
	<li>Has a ConnectionString format: 
<pre>
 "Server=hostname;Database=database;User ID=username;Password=password"
         (or)
 "Host=hostname;Dbname=database;User=username;Passwd=password"
</pre>

	<li>C# Example:
<pre>
 using System;
 using System.Data;
 using Mono.Data.MySql;
 
 public class Test 
 {
    public static void Main(string[] args)
    {
       string connectionString = 
          "Server=localhost;" +
          "Database=test;" +
          "User ID=myuserid;" +
          "Password=mypassword;";
       IDbConnection dbcon;
       dbcon = new MySqlConnection(connectionString);
       dbcon.Open();
       IDbCommand dbcmd = dbcon.CreateCommand();
       // requires a table to be created named employee
       // with columns firstname and lastname
       // such as,
       //        CREATE TABLE employee (
       //           firstname varchar(32),
       //           lastname varchar(32));
       string sql = 
            "SELECT firstname, lastname " + 
            "FROM employee";
       dbcmd.CommandText = sql;
       IDataReader reader = dbcmd.ExecuteReader();
       while(reader.Read()) {
            string FirstName = reader["firstname"];
            string LastName = reader["lastname"];
            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 \
	    -r Mono.Data.MySql.dll
</pre>
		</li>
		<li>Build on Windows via Cygwin:
<pre>
	mono C:/cygwin/home/MyHome/mono/install/bin/mcs.exe \
	     TestExample.cs \
	     -lib:C:/cygwin/home/MyHome/mono/install/lib \
	     -r System.Data.dll \
	     -r Mono.Data.MySql.dll
</pre>
		</li>
	</ul>
	</li>
	<li>Running the Example:
<pre>
mono TestExample.exe
</pre>
	</li>

</ul>