只想知道 发表于 2015-1-16 22:49:37

ASP.NET网站制作之技能 .NET怎样会见MySQL数据库

因为各系统的API不同,代码调用API编写程序就会遇到很多不兼容的地方,比如Java改写后的Serv-U就不能在手机上执行,手机的游戏也不能直接在微机上执行。mysql|会见|技能|数据|数据库.NET的数据库自然撑持MSSQLServer,可是并不是其他数据库不撑持,而是微软基于本身好处必要,在撑持、营销上推本人的数据库产物;可是作为平台计谋,他并不是排挤其他数据库,而是参考java系统提出了一套数据库会见标准,让各个第三方举行开辟,供应特定的驱动。

  MySQL是收费的数据库,在本钱上具有没有可替换的上风,可是今朝来说,并没有供应。微软把MySQL看成ODBC数据库,能够依照ODBC.Net标准举行会见,详细参考

  http://www.microsoft.com/china/community/Columns/Luyan/6.mspx

  而实践上,针对ODBC。Net的必要设置DSN的贫苦,而是呈现了一个开源的体系MySQLDriverCS,对MySQL的开辟举行了封装,完成了.net情况下关于MySQL数据库体系的会见。

  http://sourceforge.net/projects/mysqldrivercs/

  经由过程浏览源代码,我们看到MySQLDriverCS的思绪是使用C函数的底层库来利用数据库的,一般供应对MySQL数据库的会见的数据库的CDLL是名为libmySQL.dll的驱动文件,MySQLDriverCS作为一个.net库举行封装C作风的驱动。

  详细怎样举行呢?

  翻开工程后,我们看到个中有一个对照特别的.cs文件CPrototypes.cs:

以下是援用片断:

#regionLICENSE
/*
MySQLDriverCS:AnC#driverforMySQL.
Copyright(c)2002ManuelLucasViasLivschitz.

ThisfileispartofMySQLDriverCS.

MySQLDriverCSisfreesoftware;youcanredistributeitand/ormodify
itunderthetermsoftheGNUGeneralPublicLicenseaspublishedby
theFreeSoftwareFoundation;eitherversion2oftheLicense,or
(atyouroption)anylaterversion.

MySQLDriverCSisdistributedinthehopethatitwillbeuseful,
butWITHOUTANYWARRANTY;withouteventheimpliedwarrantyof
MERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.Seethe
GNUGeneralPublicLicenseformoredetails.

YoushouldhavereceivedacopyoftheGNUGeneralPublicLicense
alongwithMySQLDriverCS;ifnot,writetotheFreeSoftware
Foundation,Inc.,59TemplePlace,Suite330,Boston,MA02111-1307USA
*/
#endregion
usingSystem;
usingSystem.Data;
usingSystem.Runtime.InteropServices;
namespaceMySQLDriverCS
{

//
publicclassMYSQL_FIELD_FACTORY
{
staticstringversion;
publicstaticIMYSQL_FIELDGetInstance()
{

if(version==null)
{
version=CPrototypes.GetClientInfo();
}
if(version.CompareTo("4.1.2-alpha")>=0)
{
returnnewMYSQL_FIELD_VERSION_5();
}
else
returnnewMYSQL_FIELD_VERSION_3();
}
}
publicinterfaceIMYSQL_FIELD
{
stringName{get;}
uintType{get;}
longMax_Length{get;}
}
///<summary>
///Fielddescriptor
///</summary>
//"3.23.32",4.0.1-alpha
internalclassMYSQL_FIELD_VERSION_3:IMYSQL_FIELD
{
///<summary>
///Nameofcolumn
///</summary>
publicstringname;
///<summary>
///Tableofcolumnifcolumnwasafield
///</summary>
publicstringtable;
//publicstringorg_table;/*Orgtablenameiftablewasanalias*/
//publicstringdb;/*Databasefortable*/
///<summary>
///def
///</summary>
publicstringdef;
///<summary>
///length
///</summary>
publiclonglength;
///<summary>
///max_length
///</summary>
publiclongmax_length;
///<summary>
///Divflags
///</summary>
publicuintflags;
///<summary>
///Numberofdecimalsinfield
///</summary>
publicuintdecimals;
///<summary>
///Typeoffield.Semysql_com.hfortypes
///</summary>
publicuinttype;

///<summary>
///Name
///</summary>
publicstringName
{
get{returnname;}
}
///<summary>
///Type
///</summary>
publicuintType
{
get{returntype;}
}
///<summary>
///Max_Length
///</summary>
publiclongMax_Length
{
get{returnmax_length;}
}
}

///<summary>
///Fielddescriptor
///</summary>

internalclassMYSQL_FIELD_VERSION_5:IMYSQL_FIELD
{
///<summary>
///Nameofcolumn
///</summary>
publicstringname;
///<summary>
///Originalcolumnname,ifanalias
///</summary>
publicstringorg_name;
///<summary>
///Tableofcolumnifcolumnwasafield
///</summary>
publicstringtable;
///<summary>
///Orgtablenameiftablewasanalias
///</summary>
publicstringorg_table;
///<summary>
///Databasefortable
///</summary>
publicstringdb;
///<summary>
///Catalogfortable
///</summary>
//publicstringcatalog;
///<summary>
///def
///</summary>
publicstringdef;
///<summary>
///length
///</summary>
publiclonglength;
///<summary>
///max_length
///</summary>
publiclongmax_length;
///<summary>
///name_length
///</summary>
//publicuintname_length;
///<summary>
///org_name_length
///</summary>
publicuintorg_name_length;
///<summary>
///table_length
///</summary>
publicuinttable_length;
///<summary>
///org_table_length
///</summary>
publicuintorg_table_length;
///<summary>
///db_length
///</summary>
publicuintdb_length;
///<summary>
///catalog_length
///</summary>
publicuintcatalog_length;
///<summary>
///def_length
///</summary>
publicuintdef_length;
///<summary>
///Divflags
///</summary>
publicuintflags;
///<summary>
///Numberofdecimalsinfield
///</summary>
publicuintdecimals;
///<summary>
///Characterset
///</summary>
publicuintcharsetnr;
///<summary>
///Typeoffield.Semysql_com.hfortypes
///</summary>
publicuinttype;

///<summary>
///Name
///</summary>
publicstringName
{
get{returnname;}
}
///<summary>
///Type
///</summary>
publicuintType
{
get{returntype;}
}
///<summary>
///Max_Length
///</summary>
publiclongMax_Length
{
get{returnmax_length;}
}
}
//
publicenumenum_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>
///Cprototypeswarpperformysqllib.
///</summary>
internalclassCPrototypes
{

unsafepublicstaticexternvoid*mysql_init(void*must_be_null);

unsafepublicstaticexternvoidmysql_close(void*handle);

//BEGINADDITION2004-07-01BYAlexSeewald
//Enablesustocallmysql_optiontoactivatecompressionandtimeout

unsafepublicstaticexternvoidmysql_options(void*mysql,uintoption,uint*value);
//ENDADDITION2004-07-01ByAlexSeewald

unsafepublicstaticexternvoid*mysql_real_connect(void*mysql,stringhost,stringuser,stringpasswd,stringdb,uintport,stringunix_socket,intclient_flag);

unsafepublicstaticexternintmysql_query(void*mysql,stringquery);

unsafepublicstaticexternvoid*mysql_store_result(void*mysql);

unsafepublicstaticexternvoidmysql_free_result(void*result);

unsafepublicstaticexternuintmysql_errno(void*mysql);

unsafepublicstaticexternstringmysql_error(void*mysql);

unsafepublicstaticexternuintmysql_field_count(void*mysql);

unsafepublicstaticexternulongmysql_affected_rows(void*mysql);

unsafepublicstaticexternuintmysql_num_fields(void*result);

unsafepublicstaticexternulongmysql_num_rows(void*result);

unsafepublicstaticexternIntPtrmysql_fetch_field_direct(void*result,uintfieldnr);

///<returns>Returnsastringthatrepresentstheclientlibraryversion</returns>
[DllImport("libmySQL.dll",CharSet=System.Runtime.InteropServices.CharSet.Ansi,
EntryPoint="mysql_get_client_info",ExactSpelling=true)]
publicstaticexternstringGetClientInfo();


unsafepublicstaticexternIntPtrmysql_fetch_row(void*result);

unsafepublicstaticexternintmysql_select_db(void*mysql,stringdbname);

unsafepublicstaticexternUInt32*mysql_fetch_lengths(void*result);

}
}

  基础上是将C作风的基本数据布局举行.net的从头界说,然后经由过程InteropServices举行会见。

  详细怎样使用这个库举行操纵,能够参考个中的例子。效率会有不少的变化。而实际上java是基于堆栈机器来设计,这和我们常见的基于寄存器的本地机器是差异比较大的。总体来说,这是一种虚拟机的设计思路。

透明 发表于 2015-1-20 05:15:22

碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。

因胸联盟 发表于 2015-1-28 17:33:47

在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的

蒙在股里 发表于 2015-2-5 22:21:52

ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。

若天明 发表于 2015-2-13 22:48:35

对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。

海妖 发表于 2015-3-4 02:42:13

目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.

再现理想 发表于 2015-3-11 15:31:53

碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。

精灵巫婆 发表于 2015-3-19 01:25:00

JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。

山那边是海 发表于 2015-3-27 01:09:17

主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
页: [1]
查看完整版本: ASP.NET网站制作之技能 .NET怎样会见MySQL数据库