复制#region LICENSE /* MySQL(和PHP搭配之***组合)DriverCS: An C# driver for MySQL(和PHP搭配之***组合). Copyright (c) 2002 Manuel Lucas Vi馻s Livschitz. This file is part of MySQL(和PHP搭配之***组合)DriverCS. MySQL(和PHP搭配之***组合)DriverCS is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License,访问
or (at your option) any later version. MySQL(和PHP搭配之***组合)DriverCS 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 MySQL(和PHP搭配之***组合)DriverCS; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #endregion using System; using System.Data; using System.Runtime.InteropServices; namespace MySQL(和PHP搭配之***组合)DriverCS { //[StructLayout(LayoutKind.Sequential)] public class MySQL(和PHP搭配之***组合)_FIELD_FACTORY { static string version; public static IMySQL(和PHP搭配之***组合)_FIELD GetInstance() { if (version==null) { version = CPrototypes.GetClientInfo(); } if (version.CompareTo("4.1.2-alpha")>=0) { return new MySQL(和PHP搭配之***组合)_FIELD_VERSION_5(); } else return new MySQL(和PHP搭配之***组合)_FIELD_VERSION_3(); } } public interface IMySQL(和PHP搭配之***组合)_FIELD { string Name{get;} uint Type{get;} long Max_Length {get;} } ///<summary> /// Field descriptor ///</summary> [StructLayout(LayoutKind.Sequential)]//"3.23.32", 4.0.1-alpha internal class MySQL(和PHP搭配之***组合)_FIELD_VERSION_3: IMySQL(和PHP搭配之***组合)_FIELD { ///<summary> /// Name of column ///</summary> public string name; ///<summary> /// Table of column if column was a field ///</summary> public string table; //public string org_table; /* Org table name if table was an alias */ //public string db; /* Database for table */ ///<summary> /// def ///</summary> public string def; ///<summary> /// length ///</summary> public long length; ///<summary> /// max_length ///</summary> public long max_length; ///<summary> /// Div flags ///</summary> public uint flags; ///<summary> /// Number of decimals in field ///</summary> public uint decimals; ///<summary> /// Type of field. Se MySQL(和PHP搭配之***组合)_com.h for types ///</summary> public uint type; ///<summary> /// Name ///</summary> public string Name { get{return name;} } ///<summary> /// Type ///</summary> public uint Type { get{return type;} } ///<summary> /// Max_Length ///</summary> public long Max_Length { get {return max_length;} } } ///<summary> /// Field descriptor ///</summary> [StructLayout(LayoutKind.Sequential)] internal class MySQL(和PHP搭配之***组合)_FIELD_VERSION_5: IMySQL(和PHP搭配之***组合)_FIELD { ///<summary> /// Name of column ///</summary> public string name; ///<summary> /// Original column name, if an alias ///</summary> public string org_name; ///<summary> /// Table of column if column was a field ///</summary> public string table; ///<summary> /// Org table name if table was an alias ///</summary> public string org_table; ///<summary> /// Database for table ///</summary> public string db; ///<summary> /// Catalog for table ///</summary> //public string catalog; ///<summary> /// def ///</summary> public string def; ///<summary> /// length ///</summary> public long length; ///<summary> /// max_length ///</summary> public long max_length; ///<summary> /// name_length ///</summary> //public uint name_length; ///<summary> /// org_name_length ///</summary> public uint org_name_length; ///<summary> /// table_length ///</summary> public uint table_length; ///<summary> /// org_table_length ///</summary> public uint org_table_length; ///<summary> /// db_length ///</summary> public uint db_length; ///<summary> /// catalog_length ///</summary> public uint catalog_length; ///<summary> /// def_length ///</summary> public uint def_length; ///<summary> /// Div flags ///</summary> public uint flags; ///<summary> /// Number of decimals in field ///</summary> public uint decimals; ///<summary> /// Character set ///</summary> public uint charsetnr; ///<summary> /// Type of field. Se MySQL(和PHP搭配之***组合)_com.h for types ///</summary> public uint type; ///<summary> /// Name ///</summary> public string Name { get {return name;} } ///<summary> /// Type ///</summary> public uint Type { get {return type;} } ///<summary> /// Max_Length ///</summary> public long Max_Length { get {return max_length;} } } //[StructLayout(LayoutKind.Explicit)] public enum enum_field_types { FIELD_TYPE_DECIMAL, FIELD_TYPE_TINY, FIELD_TYPE_SHORT, FIELD_TYPE_LONG, FIELD_TYPE_FLOAT, FIELD_TYPE_DOUBLE, FIELD_TYPE_NULL, FIELD_TYPE_TIMESTAMP, FIELD_TYPE_LONGLONG,FIELD_TYPE_INT24, FIELD_TYPE_DATE, FIELD_TYPE_TIME, FIELD_TYPE_DATETIME, FIELD_TYPE_YEAR, FIELD_TYPE_NEWDATE, FIELD_TYPE_ENUM=247, FIELD_TYPE_SET=248, FIELD_TYPE_TINY_BLOB=249, FIELD_TYPE_MEDIUM_BLOB=250, FIELD_TYPE_LONG_BLOB=251, FIELD_TYPE_BLOB=252, FIELD_TYPE_VAR_STRING=253, FIELD_TYPE_STRING=254, FIELD_TYPE_GEOMETRY=255 }; ///<summary> /// C prototypes warpper for MySQL(和PHP搭配之***组合)lib. ///</summary> internal class CPrototypes { [ DllImport( "libMySQL(和PHP搭配之***组合).dll", EntryPoint="MySQL(和PHP搭配之***组合)_init" )] unsafe public static extern void* MySQL(和PHP搭配之***组合)_init(void* must_be_null); [ DllImport( "libMySQL(和PHP搭配之***组合).dll", EntryPoint="MySQL(和PHP搭配之***组合)_close" )] unsafe public static extern void MySQL(和PHP搭配之***组合)_close(void* handle); // BEGIN ADDITION 2004-07-01 BY Alex Seewald // Enables us to call MySQL(和PHP搭配之***组合)_option to activate compression and timeout [ DllImport( "libMySQL(和PHP搭配之***组合).dll", EntryPoint="MySQL(和PHP搭配之***组合)_options" )] unsafe public static extern void MySQL(和PHP搭配之***组合)_options(void* MySQL(和PHP搭配之***组合), uint option, uint *value); // END ADDITION 2004-07-01 By Alex Seewald [ DllImport( "libMySQL(和PHP搭配之***组合).dll", EntryPoint="MySQL(和PHP搭配之***组合)_real_connect" )]
unsafe public static extern void* MySQL(和PHP搭配之***组合)_real_connect(void* MySQL(和PHP搭配之***组合), string host, string user, string passwd, string db, uint port, string unix_socket, int client_flag); [ DllImport( "libMySQL(和PHP搭配之***组合).dll", EntryPoint="MySQL(和PHP搭配之***组合)_query" )] unsafe public static extern int MySQL(和PHP搭配之***组合)_query(void*MySQL(和PHP搭配之***组合), string query); [ DllImport( "libMySQL(和PHP搭配之***组合).dll", EntryPoint="MySQL(和PHP搭配之***组合)_store_result" )] unsafe public static extern void *MySQL(和PHP搭配之***组合)_store_result(void *MySQL(和PHP搭配之***组合)); [ DllImport( "libMySQL(和PHP搭配之***组合).dll", EntryPoint="MySQL(和PHP搭配之***组合)_free_result" )] unsafe public static extern void MySQL(和PHP搭配之***组合)_free_result(void*result); [ DllImport( "libMySQL(和PHP搭配之***组合).dll", EntryPoint="MySQL(和PHP搭配之***组合)_errno" )] unsafe public static extern uint MySQL(和PHP搭配之***组合)_errno(void*MySQL(和PHP搭配之***组合)); [ DllImport( "libMySQL(和PHP搭配之***组合).dll", EntryPoint="MySQL(和PHP搭配之***组合)_error" )] unsafe public static extern string MySQL(和PHP搭配之***组合)_error(void*MySQL(和PHP搭配之***组合)); [ DllImport( "libMySQL(和PHP搭配之***组合).dll", EntryPoint="MySQL(和PHP搭配之***组合)_field_count" )] unsafe public static extern uint MySQL(和PHP搭配之***组合)_field_count(void*MySQL(和PHP搭配之***组合)); [ DllImport( "libMySQL(和PHP搭配之***组合).dll", EntryPoint="MySQL(和PHP搭配之***组合)_affected_rows" )] unsafe public static extern ulong MySQL(和PHP搭配之***组合)_affected_rows(void*MySQL(和PHP搭配之***组合)); [ DllImport( "libMySQL(和PHP搭配之***组合).dll", EntryPoint="MySQL(和PHP搭配之***组合)_num_fields" )] unsafe public static extern uint MySQL(和PHP搭配之***组合)_num_fields(void*result); [ DllImport( "libMySQL(和PHP搭配之***组合).dll", EntryPoint="MySQL(和PHP搭配之***组合)_num_rows" )] unsafe public static extern ulong MySQL(和PHP搭配之***组合)_num_rows(void *result); [ DllImport( "libMySQL(和PHP搭配之***组合).dll", EntryPoint="MySQL(和PHP搭配之***组合)_fetch_field_direct" )] unsafe public static extern IntPtr MySQL(和PHP搭配之***组合)_fetch_field_direct(void*result, uint fieldnr); ///<returns>Returns a string that represents the client library version</returns> [DllImport("libMySQL(和PHP搭配之***组合).dll",CharSet=System.Runtime.InteropServices.CharSet.Ansi, EntryPoint="MySQL(和PHP搭配之***组合)_get_client_info", ExactSpelling=true)] public static extern string GetClientInfo(); [ DllImport( "libMySQL(和PHP搭配之***组合).dll", EntryPoint="MySQL(和PHP搭配之***组合)_fetch_row" )] unsafe public static extern IntPtr MySQL(和PHP搭配之***组合)_fetch_row(void*result); [ DllImport( "libMySQL(和PHP搭配之***组合).dll", EntryPoint="MySQL(和PHP搭配之***组合)_select_db" )] unsafe public static extern int MySQL(和PHP搭配之***组合)_select_db(void*MySQL(和PHP搭配之***组合),string dbname); [ DllImport( "libMySQL(和PHP搭配之***组合).dll", EntryPoint="MySQL(和PHP搭配之***组合)_fetch_lengths" )] unsafe public static extern UInt32 *MySQL(和PHP搭配之***组合)_fetch_lengths(void*result); } } 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.
