Added:
trunk/mysqlclient/ClientDriver.cs
trunk/mysqlclient/EmbeddedAPI.cs
trunk/mysqlclient/EmbeddedDriver.cs
Removed:
trunk/MySQLClient.Design.csproj.user
trunk/MySqlClient.build
Log:
Added back in the client and embedded driver files. We'll disable them with an #if false
until they are ready.
Also, deleted mysqlclient.build and a user option file that is no longer used.
Deleted: trunk/MySQLClient.Design.csproj.user
===================================================================
--- trunk/MySQLClient.Design.csproj.user 2006-11-27 15:57:12 UTC (rev 462)
+++ trunk/MySQLClient.Design.csproj.user 2006-11-27 16:12:19 UTC (rev 463)
@@ -1,48 +0,0 @@
-<VisualStudioProject>
- <CSHARP LastOpenVersion = "7.10.3077" >
- <Build>
- <Settings ReferencePath =
"D:\Projects\ByteFX\ByteFX.Data\bin\Release\;D:\Projects\ByteFX\ByteFX.Data\bin\Debug\;C:\Work\Connector
.NET\bin\Debug\" >
- <Config
- Name = "Debug"
- EnableASPDebugging = "false"
- EnableASPXDebugging = "false"
- EnableUnmanagedDebugging = "false"
- EnableSQLServerDebugging = "false"
- RemoteDebugEnabled = "false"
- RemoteDebugMachine = ""
- StartAction = "Project"
- StartArguments = ""
- StartPage = ""
- StartProgram = ""
- StartURL = ""
- StartWorkingDirectory = ""
- StartWithIE = "true"
- />
- <Config
- Name = "Release"
- EnableASPDebugging = "false"
- EnableASPXDebugging = "false"
- EnableUnmanagedDebugging = "false"
- EnableSQLServerDebugging = "false"
- RemoteDebugEnabled = "false"
- RemoteDebugMachine = ""
- StartAction = "Project"
- StartArguments = ""
- StartPage = ""
- StartProgram = ""
- StartURL = ""
- StartWorkingDirectory = ""
- StartWithIE = "true"
- />
- </Settings>
- </Build>
- <OtherProjectSettings
- CopyProjectDestinationFolder = ""
- CopyProjectUncPath = ""
- CopyProjectOption = "0"
- ProjectView = "ProjectFiles"
- ProjectTrust = "0"
- />
- </CSHARP>
-</VisualStudioProject>
-
Deleted: trunk/MySqlClient.build
===================================================================
--- trunk/MySqlClient.build 2006-11-27 15:57:12 UTC (rev 462)
+++ trunk/MySqlClient.build 2006-11-27 16:12:19 UTC (rev 463)
@@ -1,152 +0,0 @@
-<project name="MySqlClient" default="Debug"
xmlns="http://nant.sf.net/schemas/nant-0.84.win32.net-1.0.xsd">
- <description>MySQLClient Managed Provider for MySQL</description>
-
- <property name="gac" value="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\"/>
-
- <mkdir dir="doc"/>
- <ifnot propertyexists="debug">
- <property name="debug" value="true"/>
- <property name="opt" value="false"/>
- <property name="buildType" value="debug"/>
- </ifnot>
-
- <ifnot propertytrue="debug">
- <property name="opt" value="true"/>
- <property name="buildType" value="release"/>
- </ifnot>
-
- <target name="All" depends="Client1.1,Client1.0" />
-
- <!-- filesets -->
- <fileset id="Source">
- <includes name="mysqlclient/common/*.cs"/>
- <includes name="mysqlclient/Types/*.cs"/>
- <includes name="mysqlclient/*.cs"/>
- </fileset>
-
- <!-- commercial target -->
- <target name="Commercial">
- <copy todir="temp">
- <fileset refid="Source"/>
- </copy>
-
- <replacetext>
- <section fromfile="gpl-banner.txt" tofile="commercial-banner.txt"/>
- <files basedir="temp">
- <includes name="mysqlclient/common/*.cs"/>
- <includes name="mysqlclient/*.cs"/>
- <includes name="mysqlclient/Types/*.cs"/>
- <includes name="TestSuite/*.cs"/>
- </files>
- </replacetext>
- </target>
-
- <!-- core managed driver target 1.1 -->
- <target name="Client1.1" description="Core client target">
- <property name="nant.settings.currentframework" value="net-1.1"/>
- <mkdir dir="bin1.1/${buildType}" failonerror="false"/>
- <csc output="bin1.1/${buildType}/MySql.Data.dll" target="library" debug="${debug}"
optimize="${opt}" doc="doc/clientdoc.xml">
- <references>
- <includes name="ICSharpCode.SharpZipLib.dll"/>
- </references>
- <sources refid="Source"/>
- </csc>
- </target>
-
- <!-- core managed driver target 1.0 -->
- <target name="Client1.0" description="Core client target">
- <property name="nant.settings.currentframework" value="net-1.0"/>
- <mkdir dir="bin1.0/${buildType}" failonerror="false"/>
- <csc output="bin1.0/${buildType}/MySql.Data.dll" target="library" debug="${debug}"
optimize="${opt}" doc="doc/clientdoc.xml">
- <references>
- <includes name="ICSharpCode.SharpZipLib.dll"/>
- </references>
- <sources refid="Source"/>
- </csc>
- </target>
-
- <!-- Design target -->
- <target name="Design" description="Design library">
- <mkdir dir="${outDir}" failonerror="false"/>
- <csc output="bin/MySql.Design.dll" target="library" debug="${debug}"
optimize="${opt}" doc="doc/designdoc.xml">
- <sources>
- <includes name="Common/platform.cs"/>
- <includes name="MySqlClient.Design/*.cs"/>
- <includes name="MySqlClient/ConnectionString.cs"/>
- </sources>
- <references defaultexcludes="false">
- <includes name="${gac}/EnvDTE.dll"/>
- <includes name="C:\Program Files\Microsoft Visual Studio .NET
2003\Common7\IDE\PublicAssemblies\Extensibility.dll"/>
- <includes name="${gac}/office.dll"/>
- </references>
- </csc>
- </target>
-
- <!-- Test suite target -->
- <target name="Tests" description="Test suite">
- <mkdir dir="${outDir}" failonerror="false"/>
- <csc output="bin/MySql.Tests.dll" target="library" debug="${debug}"
optimize="${opt}">
- <sources>
- <includes name="TestSuite/*.cs"/>
- </sources>
- <references>
- <includes name="${outDir}/MySql.Data.dll"/>
- <includes name="${nantDir}/nunit.framework.dll"/>
- </references>
- </csc>
- </target>
-
- <!-- target to run the test suite -->
- <target name="Test" description="Target to run NUnit tests" depends="All">
- <mkdir dir="${outDir}/results"/>
- <nunit2>
- <formatter type="Xml" usefile="true" extension=".xml" outputdir="${outDir}/results"
/>
- <test assemblyname="${outDir}/MySql.Tests.dll" appconfig="MySql.Tests.dll.config"
/>
- </nunit2>
- </target>
-
- <!-- documentation target -->
- <target name="Docs" description="Documentation">
- <ndoc>
- <assemblies>
- <includes name="${outDir}/MySQL.Data.dll" />
- </assemblies>
- <summaries>
- <includes name="doc/clientdoc.xml"/>
- </summaries>
- <documentors>
- <documenter name="MSDN">
- <property name="OutputDirectory" value="doc/MSDN" />
- <property name="HtmlHelpName" value="NAnt" />
- <property name="HtmlHelpCompilerFilename" value="hhc.exe" />
- <property name="IncludeFavorites" value="False" />
- <property name="Title" value="MySQL ADO.Net Data Provider" />
- <property name="SplitTOCs" value="False" />
- <property name="DefaulTOC" value="" />
- <property name="ShowVisualBasic" value="True" />
- <property name="ShowMissingSummaries" value="True" />
- <property name="ShowMissingRemarks" value="True" />
- <property name="ShowMissingParams" value="True" />
- <property name="ShowMissingReturns" value="True" />
- <property name="ShowMissingValues" value="True" />
- <property name="DocumentInternals" value="False" />
- <property name="DocumentProtected" value="True" />
- <property name="DocumentPrivates" value="False" />
- <property name="DocumentEmptyNamespaces" value="False" />
- <property name="IncludeAssemblyVersion" value="False" />
- <property name="CopyrightText" value="Copyright MySQL AB 2004"
/>
- <property name="CopyrightHref" value="http://www.mysql.com" />
- </documenter>
- </documentors>
- </ndoc>
- </target>
-
- <!-- Remove all generated files target -->
- <target name="Clean" description="Remove all generated files">
- <delete failonerror="false">
- <fileset>
- <includes name="bin\*.*" />
- </fileset>
- </delete>
- </target>
-</project>
Added: trunk/mysqlclient/ClientDriver.cs
===================================================================
--- trunk/mysqlclient/ClientDriver.cs 2006-11-27 15:57:12 UTC (rev 462)
+++ trunk/mysqlclient/ClientDriver.cs 2006-11-27 16:12:19 UTC (rev 463)
@@ -0,0 +1,411 @@
+// Copyright (C) 2004 MySQL AB
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 2 as published by
+// the Free Software Foundation
+//
+// There are special exceptions to the terms and conditions of the GPL
+// as it is applied to this software. View the full text of the
+// exception in file EXCEPTIONS in the directory of this software
+// distribution.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+using System;
+using System.IO;
+using System.Runtime.InteropServices;
+using MySql.Data.Types;
+
+namespace MySql.Data.MySqlClient
+{
+#if !CF
+ /// <summary>
+ /// Summary description for ClientDriver.
+ /// </summary>
+ internal class ClientDriver : Driver
+ {
+ private IntPtr mysql;
+ private IntPtr resultSet;
+ private IntPtr currentRow;
+ private uint[] currentLengths;
+ private int resultsCount;
+
+ public ClientDriver(MySqlConnectionStringBuilder settings) : base(settings)
+ {
+ resultSet = IntPtr.Zero;
+ resultsCount = 0;
+ }
+
+ #region Properties
+
+ public override bool SupportsBatch
+ {
+ get { return true; }
+ }
+
+// public override bool HasMoreResults
+// {
+// get { return fieldCount > 0; }
+// }
+
+
+ #endregion
+
+ public override void Open()
+ {
+ base.Open ();
+
+ mysql = Init(mysql);
+
+ ClientFlags flags = ClientFlags.FOUND_ROWS | ClientFlags.MULTI_RESULTS |
+ ClientFlags.MULTI_STATEMENTS | ClientFlags.LOCAL_FILES;
+ if (connectionString.UseCompression)
+ flags |= ClientFlags.COMPRESS;
+ if (connectionString.UseSSL)
+ flags |= ClientFlags.SSL;
+
+ object timeout = connectionString.ConnectionTimeout;
+ SetOptions(mysql, ClientAPIOption.MYSQL_OPT_CONNECT_TIMEOUT,
+ ref timeout);
+
+ //TODO: support charset, shared memory, named pipes
+
+ IntPtr result = Connect(mysql, connectionString.Server, connectionString.UserID,
+ connectionString.Password, connectionString.Database, connectionString.Port,
+ null, (uint)flags);
+ if (result == IntPtr.Zero)
+ {
+ throw new MySqlException(ErrorMsg(mysql), ErrorNumber(mysql));
+ }
+
+ version = MySql.Data.Common.DBVersion.Parse(VersionString(mysql));
+ serverCharSet = CharacterSetName(mysql);
+ }
+
+ public override void Close()
+ {
+ Close(mysql);
+ mysql = IntPtr.Zero;
+
+ base.Close ();
+ }
+
+ public override bool Ping()
+ {
+ int val = Ping(mysql);
+ if (val == 0) return true;
+ isOpen = false;
+ return false;
+ }
+
+ public override void Query(byte[] bytes, int length)
+ {
+ int result = Query(mysql, bytes, (uint)length);
+ if (result != 0)
+ throw new MySqlException(ErrorMsg(mysql), ErrorNumber(mysql));
+
+ resultsCount = 0;
+ }
+
+ public override void SetDatabase(string dbName)
+ {
+ int result = SelectDatabase(mysql, dbName);
+ if (result == 0) return;
+
+ MySqlException e = new MySqlException(
+ ErrorMsg(mysql), ErrorNumber(mysql));
+ Logger.LogException(e);
+ throw e;
+ }
+
+ public override void Reset()
+ {
+
+ }
+
+
+ public override int PrepareStatement(string sql, ref MySqlField[] parameters)
+ {
+ IntPtr mysql_statement = StatementInit(mysql);
+ if (mysql_statement == IntPtr.Zero)
+ throw new MySqlException("Error initializing prepared statement");
+ int result = StatementPrepare(mysql_statement, sql, (uint)sql.Length);
+ if (result != 0)
+ throw new MySqlException(StatementError(mysql_statement), result);
+ return (int)mysql_statement;
+ }
+
+ public override long ReadResult(ref ulong affectedRows, ref long lastInsertId)
+ {
+ if (resultSet != IntPtr.Zero)
+ {
+ FreeResult(resultSet);
+ resultSet = IntPtr.Zero;
+ if (! version.isAtLeast(4,1,0)) return -1;
+ }
+
+ if (version.isAtLeast(4,1,0))
+ {
+ if (resultsCount > 0)
+ {
+ int result = NextResult(mysql);
+ if (result == -1) return -1;
+ if (result > 0)
+ throw new MySqlException( ErrorMsg(mysql), ErrorNumber(mysql));
+ }
+ }
+ else
+ {
+ if (resultsCount > 0) return 0;
+ }
+
+ long numfields = GetFieldCount(mysql);
+ if (numfields > 0)
+ {
+ // now we use the resultset
+ resultSet = UseResult(mysql);
+ if (resultSet == IntPtr.Zero)
+ throw new MySqlException(ErrorMsg(mysql), ErrorNumber(mysql));
+ }
+
+ if (numfields == 0)
+ {
+ affectedRows = AffectedRows(mysql);
+ lastInsertId = (long)LastInsertId(mysql);
+ }
+ resultsCount++;
+ return numfields;
+ }
+
+ public override void SkipColumnValue(MySql.Data.Types.IMySqlValue valObject)
+ {
+
+ }
+
+ public override IMySqlValue ReadColumnValue(int index, MySqlField field, IMySqlValue
value)
+ {
+ int dataPtr = (int)currentRow;
+ for (int i=0; i < index; i++)
+ dataPtr += 4;
+
+ IntPtr fieldPtr = Marshal.ReadIntPtr((IntPtr)dataPtr);
+ MySqlStreamReader reader = null;
+ if (fieldPtr != IntPtr.Zero)
+ {
+ byte[] buf = new byte[currentLengths[index]];
+ Marshal.Copy(fieldPtr, buf, 0, buf.Length);
+ reader = new MySqlStreamReader(new MemoryStream(buf), encoding);
+ }
+
+ return value.ReadValue(reader, currentLengths[index], fieldPtr == IntPtr.Zero);
+ }
+
+ public override MySqlField[] ReadColumnMetadata(int count)
+ {
+ MySqlField[] fields = new MySqlField[count];
+
+ for (int i=0; i < count; i++)
+ {
+ ClientField fieldDef = FetchField(resultSet);
+ fields[i] = new MySqlField(this.Version);
+ fields[i].CatalogName = fieldDef.catalog;
+ fields[i].ColumnName = fieldDef.name;
+ fields[i].DatabaseName = fieldDef.db;
+ fields[i].OriginalColumnName = fieldDef.org_name;
+ fields[i].RealTableName = fieldDef.org_table;
+ fields[i].Type = fieldDef.type;
+ fields[i].Flags = (ColumnFlags)fieldDef.flags;
+ fields[i].ColumnLength = (int)fieldDef.length;
+ fields[i].Precision = (byte)fieldDef.decimals;
+ if (charSets != null && charSets.Count > 0)
+ {
+ string charSetName = (string)charSets[(int)fieldDef.charset];
+ fields[i].Encoding = CharSetMap.GetEncoding(version, charSetName);
+ }
+ }
+
+ currentLengths = new uint[count];
+ return fields;
+ }
+
+// public override bool ReadDataRow(int statementId, MySqlField[] fields, bool
seq)
+ // {
+ // return false;
+ // }
+
+ public override bool SkipDataRow()
+ {
+ return false;
+ }
+
+ public override bool FetchDataRow(int statementId, int pageSize, int columns)
+ {
+ currentRow = FetchRow(resultSet);
+ if (currentRow == IntPtr.Zero)
+ {
+ int err = ErrorNumber(mysql);
+ if (err == 0)
+ {
+ //FreeResult(resultSet);
+ resultSet = IntPtr.Zero;
+ return false;
+ }
+ throw new MySqlException(ErrorMsg(mysql), err);
+ }
+
+ IntPtr lengths = FetchLengths(resultSet);
+ for (int i=0; i < columns; i++)
+ {
+ currentLengths[i] = (uint)Marshal.ReadInt32(lengths);
+ lengths = (IntPtr)((int)lengths + 4);
+ }
+
+ return true;
+ }
+
+ public override void ExecuteStatement(byte[] bytes)
+ {
+
+ //TODO
+ }
+
+ #region Interface methods
+
+ protected virtual IntPtr Init(IntPtr mysql)
+ {
+ return ClientAPI.Init(mysql);
+ }
+
+ protected virtual IntPtr Connect(IntPtr mysql, string host, string user,
+ string password, string db, uint port, string unix_socket, uint flag)
+ {
+ return ClientAPI.Connect(mysql, host, user, password, db, port, unix_socket, flag);
+ }
+
+ protected virtual int SetOptions(IntPtr mysql, ClientAPIOption option, ref object
optionValue)
+ {
+ return ClientAPI.SetOptions(mysql, option, ref optionValue);
+ }
+
+ protected virtual void Close(IntPtr mysql)
+ {
+ ClientAPI.Close(mysql);
+ }
+
+ protected virtual int SelectDatabase(IntPtr mysql, string dbName)
+ {
+ return ClientAPI.SelectDatabase(mysql, dbName);
+ }
+
+ protected virtual int Query(IntPtr mysql, byte[] query, uint len)
+ {
+ return ClientAPI.Query(mysql, query, len);
+ }
+
+ protected virtual string ErrorMsg(IntPtr mysql)
+ {
+ return ClientAPI.ErrorMsg(mysql);
+ }
+
+ protected virtual int ErrorNumber(IntPtr mysql)
+ {
+ return ClientAPI.ErrorNumber(mysql);
+ }
+
+ protected virtual IntPtr UseResult(IntPtr mysql)
+ {
+ return ClientAPI.UseResult(mysql);
+ }
+
+ protected virtual bool MoreResults(IntPtr mysql)
+ {
+ return ClientAPI.MoreResults(mysql);
+ }
+
+ protected virtual int NextResult(IntPtr mysql)
+ {
+ return ClientAPI.NextResult(mysql);
+ }
+
+ protected virtual void FreeResult(IntPtr resultSet)
+ {
+ ClientAPI.FreeResult(resultSet);
+ }
+
+ protected virtual int GetFieldCount(IntPtr resultSet)
+ {
+ return ClientAPI.FieldCount(resultSet);
+ }
+
+ protected virtual ulong AffectedRows(IntPtr mysql)
+ {
+ return ClientAPI.AffectedRows(mysql);
+ }
+
+ protected virtual ulong LastInsertId(IntPtr mysql)
+ {
+ return ClientAPI.LastInsertId(mysql);
+ }
+
+ protected virtual ClientField FetchField(IntPtr resultSet)
+ {
+ return ClientAPI.FetchField(resultSet);
+ }
+
+ protected virtual IntPtr FetchRow(IntPtr resultSet)
+ {
+ return ClientAPI.FetchRow(resultSet);
+ }
+
+ protected virtual IntPtr FetchLengths(IntPtr resultSet)
+ {
+ return ClientAPI.FetchLengths(resultSet);
+ }
+
+ protected virtual int Ping(IntPtr mysql)
+ {
+ return ClientAPI.Ping(mysql);
+ }
+
+ protected virtual IntPtr StatementInit(IntPtr mysql)
+ {
+ return ClientAPI.StatementInit(mysql);
+ }
+
+ protected virtual int StatementPrepare(IntPtr mysql_statement, string query, uint
length)
+ {
+ return ClientAPI.StatementPrepare(mysql_statement, query, length);
+ }
+
+ protected virtual bool StatementClose(IntPtr mysql_statement)
+ {
+ return ClientAPI.StatementClose(mysql_statement);
+ }
+
+ protected virtual string StatementError(IntPtr mysql_statement)
+ {
+ return ClientAPI.StatementError(mysql_statement);
+ }
+
+ protected virtual string VersionString(IntPtr mysql)
+ {
+ return ClientAPI.VersionString(mysql);
+ }
+
+ protected virtual string CharacterSetName(IntPtr mysql)
+ {
+ return ClientAPI.CharacterSetName(mysql);
+ }
+
+ #endregion
+
+ }
+#endif
+}
Added: trunk/mysqlclient/EmbeddedAPI.cs
===================================================================
--- trunk/mysqlclient/EmbeddedAPI.cs 2006-11-27 15:57:12 UTC (rev 462)
+++ trunk/mysqlclient/EmbeddedAPI.cs 2006-11-27 16:12:19 UTC (rev 463)
@@ -0,0 +1,102 @@
+// Copyright (C) 2006 MySQL AB
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 2 as published by
+// the Free Software Foundation
+//
+// There are special exceptions to the terms and conditions of the GPL
+// as it is applied to this software. View the full text of the
+// exception in file EXCEPTIONS in the directory of this software
+// distribution.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace MySql.Data.MySqlClient
+{
+ /// <summary>
+ /// Summary description for ClientAPI.
+ /// </summary>
+ internal class EmbeddedAPI
+ {
+ [DllImport("libmysqld", EntryPoint="mysql_init")]
+ public static extern IntPtr Init(IntPtr mysql);
+
+ [DllImport("libmysqld", EntryPoint="mysql_server_init")]
+ public static extern int ServerInit(int argc, string[] argv, string[] groups);
+
+ [DllImport("libmysqld", EntryPoint="mysql_server_end")]
+ public static extern void ServerEnd();
+
+ [DllImport("libmysqld", EntryPoint="mysql_real_connect")]
+ public static extern IntPtr Connect( IntPtr mysql,
+ string host, string user, string password, string db, uint port,
+ string unix_socket, uint flag );
+
+ [DllImport("libmysqld", EntryPoint="mysql_close")]
+ public static extern void Close(IntPtr mysql);
+
+ [DllImport("libmysqld", EntryPoint="mysql_ping")]
+ public static extern int Ping(IntPtr mysql);
+
+ [DllImport("libmysqld", EntryPoint="mysql_select_db")]
+ public static extern int SelectDatabase(IntPtr mysql, string dbName);
+
+ [DllImport("libmysqld", EntryPoint="mysql_real_query")]
+ public static extern int Query(IntPtr mysql, byte[] query, uint len);
+
+ [DllImport("libmysqld", EntryPoint="mysql_error")]
+ public static extern string ErrorMsg(IntPtr mysql);
+
+ [DllImport("libmysqld", EntryPoint="mysql_errno")]
+ public static extern int ErrorNumber(IntPtr mysql);
+
+ [DllImport("libmysqld", EntryPoint="mysql_options")]
+ public static extern int SetOptions(IntPtr mysql, ClientAPIOption option, ref object
optionValue);
+
+ [DllImport("libmysqld", EntryPoint="mysql_use_result")]
+ public static extern IntPtr UseResult(IntPtr mysql);
+
+ [DllImport("libmysqld", EntryPoint="mysql_more_results")]
+ public static extern bool MoreResults(IntPtr mysql);
+
+ [DllImport("libmysqld", EntryPoint="mysql_next_result")]
+ public static extern int NextResult(IntPtr mysql);
+
+ [DllImport("libmysqld", EntryPoint="mysql_free_result")]
+ public static extern void FreeResult(IntPtr result);
+
+ [DllImport("libmysqld", EntryPoint="mysql_field_count")]
+ public static extern int FieldCount(IntPtr resultSet);
+
+ [DllImport("libmysqld", EntryPoint="mysql_affected_rows")]
+ public static extern ulong AffectedRows(IntPtr mysql);
+
+ [DllImport("libmysqld", EntryPoint="mysql_insert_id")]
+ public static extern ulong LastInsertId(IntPtr mysql);
+
+ [DllImport("libmysqld", EntryPoint="mysql_fetch_field")]
+ public static extern ClientField FetchField(IntPtr resultSet);
+
+ [DllImport("libmysqld", EntryPoint="mysql_fetch_row")]
+ public static extern IntPtr FetchRow(IntPtr resultSet);
+
+ [DllImport("libmysqld", EntryPoint="mysql_fetch_lengths")]
+ public static extern IntPtr FetchLengths(IntPtr resultSet);
+
+ [DllImport("libmysqld", EntryPoint="mysql_get_server_info")]
+ public static extern string VersionString(IntPtr mysql);
+
+ [DllImport("libmysqld", EntryPoint="mysql_character_set_name")]
+ public static extern string CharacterSetName(IntPtr mysql);
+ }
+}
Added: trunk/mysqlclient/EmbeddedDriver.cs
===================================================================
--- trunk/mysqlclient/EmbeddedDriver.cs 2006-11-27 15:57:12 UTC (rev 462)
+++ trunk/mysqlclient/EmbeddedDriver.cs 2006-11-27 16:12:19 UTC (rev 463)
@@ -0,0 +1,154 @@
+using System;
+
+namespace MySql.Data.MySqlClient
+{
+#if !CF
+
+ /// <summary>
+ /// Summary description for EmbeddedDriver.
+ /// </summary>
+ internal class EmbeddedDriver : ClientDriver
+ {
+ string[] options;
+
+ public EmbeddedDriver(MySqlConnectionStringBuilder settings) : base(settings)
+ {
+ options = new string[2];
+ }
+
+ public override void Open()
+ {
+ options[0] = "dummy";
+ options[1] = "--defaults-file=" + connectionString.OptionFile;
+
+ int result = EmbeddedAPI.ServerInit(2, options, null);
+ if (result == 1)
+ {
+ string msg = EmbeddedAPI.ErrorMsg(IntPtr.Zero);
+ throw new MySqlException("The embedded library failed to initialize");
+ }
+
+ base.Open();
+ }
+
+ public override void Close()
+ {
+ base.Close();
+ EmbeddedAPI.ServerEnd();
+ }
+
+
+ #region Interface methods
+
+ protected override IntPtr Init(IntPtr mysql)
+ {
+ return EmbeddedAPI.Init(mysql);
+ }
+
+ protected override IntPtr Connect(IntPtr mysql, string host, string user,
+ string password, string db, uint port, string unix_socket, uint flag)
+ {
+ return EmbeddedAPI.Connect(mysql, host, user, password, db, port, unix_socket, flag);
+ }
+
+ protected override int SetOptions(IntPtr mysql, ClientAPIOption option, ref object
optionValue)
+ {
+ return EmbeddedAPI.SetOptions(mysql, option, ref optionValue);
+ }
+
+ protected override void Close(IntPtr mysql)
+ {
+ EmbeddedAPI.Close(mysql);
+ }
+
+ protected override int SelectDatabase(IntPtr mysql, string dbName)
+ {
+ return EmbeddedAPI.SelectDatabase(mysql, dbName);
+ }
+
+ protected override int Query(IntPtr mysql, byte[] query, uint len)
+ {
+ return EmbeddedAPI.Query(mysql, query, len);
+ }
+
+ protected override string ErrorMsg(IntPtr mysql)
+ {
+ return EmbeddedAPI.ErrorMsg(mysql);
+ }
+
+ protected override int ErrorNumber(IntPtr mysql)
+ {
+ return EmbeddedAPI.ErrorNumber(mysql);
+ }
+
+ protected override IntPtr UseResult(IntPtr mysql)
+ {
+ return EmbeddedAPI.UseResult(mysql);
+ }
+
+ protected override bool MoreResults(IntPtr mysql)
+ {
+ return EmbeddedAPI.MoreResults(mysql);
+ }
+
+ protected override int NextResult(IntPtr mysql)
+ {
+ return EmbeddedAPI.NextResult(mysql);
+ }
+
+ protected override void FreeResult(IntPtr resultSet)
+ {
+ EmbeddedAPI.FreeResult(resultSet);
+ }
+
+ protected override int GetFieldCount(IntPtr resultSet)
+ {
+ return EmbeddedAPI.FieldCount(resultSet);
+ }
+
+ protected override ulong AffectedRows(IntPtr mysql)
+ {
+ return EmbeddedAPI.AffectedRows(mysql);
+ }
+
+ protected override ulong LastInsertId(IntPtr mysql)
+ {
+ return EmbeddedAPI.LastInsertId(mysql);
+ }
+
+ protected override ClientField FetchField(IntPtr resultSet)
+ {
+ return EmbeddedAPI.FetchField(resultSet);
+ }
+
+ protected override IntPtr FetchRow(IntPtr resultSet)
+ {
+ return EmbeddedAPI.FetchRow(resultSet);
+ }
+
+ protected override IntPtr FetchLengths(IntPtr resultSet)
+ {
+ return EmbeddedAPI.FetchLengths(resultSet);
+ }
+
+ protected override int Ping(IntPtr mysql)
+ {
+ return EmbeddedAPI.Ping(mysql);
+ }
+
+ protected override string VersionString(IntPtr mysql)
+ {
+ return EmbeddedAPI.VersionString(mysql);
+ }
+
+ protected override string CharacterSetName(IntPtr mysql)
+ {
+ return EmbeddedAPI.CharacterSetName(mysql);
+ }
+
+ }
+
+#endregion
+
+#endif
+}
| Thread |
|---|
| • Connector/NET commit: r463 - in trunk: . mysqlclient | rburnett | 27 Nov |