仓酷云

标题: ASP.NET网页设计实例解说:.NET怎样会见MySQL数据库 [打印本页]

作者: 简单生活    时间: 2015-1-16 22:48
标题: ASP.NET网页设计实例解说:.NET怎样会见MySQL数据库
说句实话,Java跨平台根本就不是外行人想想的那种,一次编译,处处运行。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:
<P>#regionLICENSE/*MySQLDriverCS:AnC#driverforMySQL.Copyright(c)2002ManuelLucasViasLivschitz.ThisfileispartofMySQLDriverCS.MySQLDriverCSisfreesoftware;youcanredistributeitand/ormodifyitunderthetermsoftheGNUGeneralPublicLicenseaspublishedbytheFreeSoftwareFoundation;eitherversion2oftheLicense,or(atyouroption)anylaterversion.MySQLDriverCSisdistributedinthehopethatitwillbeuseful,butWITHOUTANYWARRANTY;withouteventheimpliedwarrantyofMERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.SeetheGNUGeneralPublicLicenseformoredetails.YoushouldhavereceivedacopyoftheGNUGeneralPublicLicensealongwithMySQLDriverCS;ifnot,writetotheFreeSoftwareFoundation,Inc.,59TemplePlace,Suite330,Boston,MA02111-1307USA*/#endregionusingSystem;usingSystem.Data;usingSystem.Runtime.InteropServices;namespaceMySQLDriverCS{//[StructLayout(LayoutKind.Sequential)]publicclassMYSQL_FIELD_FACTORY{staticstringversion;publicstaticIMYSQL_FIELDGetInstance(){if(version==null){version=CPrototypes.GetClientInfo();}if(version.CompareTo("4.1.2-alpha")>=0){returnnewMYSQL_FIELD_VERSION_5();}elsereturnnewMYSQL_FIELD_VERSION_3();}}publicinterfaceIMYSQL_FIELD{stringName{get;}uintType{get;}longMax_Length{get;}}///<summary>///Fielddescriptor///</summary>[StructLayout(LayoutKind.Sequential)]//"3.23.32",4.0.1-alphainternalclassMYSQL_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>[StructLayout(LayoutKind.Sequential)]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;}}}//[StructLayout(LayoutKind.Explicit)]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{[DllImport("libmySQL.dll",EntryPoint="mysql_init")]unsafepublicstaticexternvoid*mysql_init(void*must_be_null);[DllImport("libmySQL.dll",EntryPoint="mysql_close")]unsafepublicstaticexternvoidmysql_close(void*handle);//BEGINADDITION2004-07-01BYAlexSeewald//Enablesustocallmysql_optiontoactivatecompressionandtimeout[DllImport("libmySQL.dll",EntryPoint="mysql_options")]unsafepublicstaticexternvoidmysql_options(void*mysql,uintoption,uint*value);//ENDADDITION2004-07-01ByAlexSeewald[DllImport("libmySQL.dll",EntryPoint="mysql_real_connect")]unsafepublicstaticexternvoid*mysql_real_connect(void*mysql,stringhost,stringuser,stringpasswd,stringdb,uintport,stringunix_socket,intclient_flag);[DllImport("libmySQL.dll",EntryPoint="mysql_query")]unsafepublicstaticexternintmysql_query(void*mysql,stringquery);[DllImport("libmySQL.dll",EntryPoint="mysql_store_result")]unsafepublicstaticexternvoid*mysql_store_result(void*mysql);[DllImport("libmySQL.dll",EntryPoint="mysql_free_result")]unsafepublicstaticexternvoidmysql_free_result(void*result);[DllImport("libmySQL.dll",EntryPoint="mysql_errno")]unsafepublicstaticexternuintmysql_errno(void*mysql);[DllImport("libmySQL.dll",EntryPoint="mysql_error")]unsafepublicstaticexternstringmysql_error(void*mysql);[DllImport("libmySQL.dll",EntryPoint="mysql_field_count")]unsafepublicstaticexternuintmysql_field_count(void*mysql);[DllImport("libmySQL.dll",EntryPoint="mysql_affected_rows")]unsafepublicstaticexternulongmysql_affected_rows(void*mysql);[DllImport("libmySQL.dll",EntryPoint="mysql_num_fields")]unsafepublicstaticexternuintmysql_num_fields(void*result);[DllImport("libmySQL.dll",EntryPoint="mysql_num_rows")]unsafepublicstaticexternulongmysql_num_rows(void*result);[DllImport("libmySQL.dll",EntryPoint="mysql_fetch_field_direct")]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();[DllImport("libmySQL.dll",EntryPoint="mysql_fetch_row")]unsafepublicstaticexternIntPtrmysql_fetch_row(void*result);[DllImport("libmySQL.dll",EntryPoint="mysql_select_db")]unsafepublicstaticexternintmysql_select_db(void*mysql,stringdbname);[DllImport("libmySQL.dll",EntryPoint="mysql_fetch_lengths")]unsafepublicstaticexternUInt32*mysql_fetch_lengths(void*result);}}
  基础上是将C作风的基本数据布局举行.net的从头界说,然后经由过程InteropServices举行会见。  详细怎样使用这个库举行操纵,能够参考个中的例子。在经过全球个人PC市场占有90%的微软对asp.net不断优化与整合后,asp.net与微软自身平台的动用上更加的高效,加上asp.net在应用上非常容易上手,相信asp.net仍会是最多客户选用的脚本语言,并会在未来几年继续领跑。
作者: 简单生活    时间: 2015-1-25 16:26
HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.
作者: 不帅    时间: 2015-2-3 09:46
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。
作者: 老尸    时间: 2015-2-8 20:06
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。
作者: 若相依    时间: 2015-2-26 03:11
通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。
作者: 只想知道    时间: 2015-3-8 11:36
网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项!
作者: 冷月葬花魂    时间: 2015-3-15 22:23
ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。
作者: 金色的骷髅    时间: 2015-3-22 17:06
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2