最近准备用Mysql+.net作开发,看了三篇文章:
1)MySQL与ASP.NET配合更强大;
2)选择MySQL还是SQL Server;
3)MySQL和.Net2.0配合使用。
MySQL与ASP.NET配合更强大
由于富有竞争力的价格和易于使用,MySQL在市场占有率方面逐步提升。开放源代码社区为了扩展MySQL的使用范围,开发出了.Net框架(.NET Framework)中可以使用的数据库连接器。我们就来学习一下如何在.Net应用程序中使用MySQL。
MySQL渐渐的成为了在选择数据库平台时一个切实可行的数据库方案。能够证明这一点的就是许多公司都选择mySQL作为他们的数据库平台,例如 Google、美联社(The Associated Press) 以及美国国家航空宇航局( NASA)。虽然对于一个开放源代码来说,低廉的价格常常被当作主要优点来说服客户,但是对于象Google那样的大规模的组织来说,他们不会放心的把非常有用的信息存放在一个只有价格优势的数据库产品中。MySQL真正的实力远远的超过了他的价格优势,他提供了丰富的来自开放源代码社区和商业化的附加工具。
和.NET的数据整合
MySQL 社区已经开发出了MySQL的数据接口,他提供了连接数据源和程序代码的基本功能。在Windows平台上,有如下的MySQL连接器:
* MySQL Connector/Net 1.0 (之前被称为ByteFX.Data):是一个为MySQL设计的开放源代码.NET数据接口。它是完全用C#来开发的,我们可以在在 MySQL.com网站上找到它。(注意:在本文的例子中,我们都会使用MySQL Connector/Net 1.0这个数据接口来连接数据库,利用Windows安装程序即可轻易安装它,它的代码实例和文档也包含其中。)
* MySQLDirect .NET Data Provider: 是一个由 Core Lab 开发的商业数据接口。他的价格由购买的许可证的类型决定,但是我们可以下载它的试用版。
如果你使用 Mono,那么在 Mono网站上可以找到PHP连接器的下载。如果你在Windows平台上运行Mono的话,你下载的连接器包含了安装程序。如果不是的话,那就要根据你的操作系统的种类去下载合适的连接器了。
使用MySQL数据接口
安装好MySQL的数据接口后,你必须在你的代码中引入它才能使用。你可以使用 MySql.Data.MySqlClient这个名空间来连接 MySQL 服务器。在C#中,可以使用using语句来引入MySQL数据接口:
using MySql.Data.MySqlClient;
另外,你也可以在一个ASP.NET的网页表单(Web Form)中通过使用导入(Import)指令来引入MySQL数据接口:
或者,你也可以在你的代码里在使用这个名空间时,写全一个类的完整路径,但是这样的话会比使用Import指令来导入输入更多的字符,浪费更多的字节。指定了名空间后,我们就可以和MySQL数据库进行数据交互了。 MySql.Data.MySqlClient这个名空间提供了许多用于处理MySQL数据的类。下面是这些类的一个样本:
* MySqlConnection: 管理和 MySQL 服务器/数据库的连接;
* MySqlDataAdapter: 一套用于填充DataSet对象和更新MySQL数据库的命令和连接的集合;
* MySqlDataReader: 让你能够从一个 MySQL 数据库读取数据。它是一个单向的数据流;
* MySqlCommand: 提供向数据库服务器发送指令的功能;
* MySqlException: 当发生问题时提供例外处理。
我们会使用其中的一些类去和我们的范例数据库进行数据交互。
连接 MySQL 数据库
使用MySQL数据库的第一步是要通过MySQLConnection类和数据库建立连接。通过一个连接字串,MySqlConnection 将会被实例化成一个示例。连接字符串将告诉代码到哪里去找MySQL服务器以及其他一些选项。
一个连接字串告诉代码使用指定的用户名和密码去连接一个名为MySQLTestServer的MySQL服务器,并进入techrepublic数据库。我在我的测试机上设定了允许匿名登陆(这样的设定有非常大的安全漏洞,所以不建议你在生产服务器上也这么做),所以在范例中将会使用如下的连接字串:
"server=localhost; database=sitepoint;"
指定了连接字串后, MySqlConnection 对象的Open方法就被调用并打开连接。连接建立后,你就可以给MySQL数据库发送命令或从数据库获得数据了。
ASP.NET和MySQL的组合
让我们更深入的讨论一下结合MySqlConnection类和其他的类来生成一个MySQL服务器上的数据库列表。表 B列出了一个使用C#写的ASP.NET的网页表单。它建立了一个连接,接着给服务器下了一个指令(SHOW DATABASES),然后通过MySqlReader对象把结果显示出来。
用 MySqlCommand 对象向MySQL服务器发送 SHOW DATABASES 命令和直接在 MySQL 管理工具中输入这个命令得结果是一样的。唯一的区别是,我们在代码中必须使用另一个对象来获取结果集。MySqlDataReader 对象在获取结果时被实例化(通过 MySqlCommand 类的 ExecuteReader 方法)。MySqlDataReader 对象的 GetString 方法被用于通过ASP.NET的标签控制来显示结果集中的数据。GetString 方法的指针0指定了显示结果集的当前行(在while循环中)的第一列数据。
Mono提示
如果你使用开放源代码的Mono开发平台,例子中的代码只需要做小小的改动就能正常的运行。MySQL的数据接口在 ByteFX.Data.MySqlClient 这个空间名里,而不是Windows上的MySql.Data.MySqlClient空间名。事实上 MySQL 的数据接口原来是由 ByteFX公司开发的,但是后被MySQL公司收购。所以如果你使用Mono的话,你必须这样声明空间名:
using ByteFX.Data.MySqlClient;
结语
MySQL 和 .NET 的组合提供了一个强大的开发平台。MySQL在开源社区得到了强大的技术支持,.NET也通过 Mono 而被开放源代码社区所接受。这样的组合提供了一个在Windows,及其他语言如UNIX或Linux,环境下高度灵活的开发平台。
Mono ByteFX.Data 与 encoding
ByteFX.Data 是 MySQL 的 .Net Data Provider, 同时提供有 mono 与 Microsoft.Net 的版本(微软版本好像叫做 Connector/.Net).
这两天在试着用 mono 与 ByteFX.Data 来存取 MySQL 数据库.
但却发现中文的字符串在存入数据库之后,全部都变成问号了.
原本以为是我编码的处置或设定有问题,在经过 Trace mono 与 ByteFX.Data 的 source code 之后,才发现并不是.
我开始怀疑是 MySQL 的问题,我首先去问 Google 大神.
Google 大神告诉我,MySQL 在 4.0 以前并不支持 unicode, 数据库预设的编码是 latin1.
ok, 那么为什么使用 MediaWiki 或是一些 blog 却可以存入 unicode 的字符串??
又稍稍的 Trace 了 MediaWiki 的 source code, 并无惊人之处,也没有什么特别的处理,纯粹就是 insert, update 而已.
最后我再回头看 ByteFX.Data 的 source code, 终于找到问题所在.
ByteFX.Data 在丢封包到 MySQL 之前,会先依据 MySQL 的 encoding 进行编码.
所以不管怎么样,我在 client 怎么转码,到最后 ByteFX.Data 都会转成 latin1,再进行存入.是故,可能的解法如下:
1. 升级 MySQL 到 4.0 以后的版本.
2. 在丢数据库之前,先把字符串转为 byte[], 如果是 byte[], ByteFX.Data 就不会进行转码,而直接存入. 但这样在取出数据的时候,还需要再作一次工,将 byte[] 转回 string.
解法 2 相当费事,而且以后如果要更换数据库的时候,又会再受到一次冲击.
看来解法 1 才是王道. 但是,懒得升级说... =_=
http://cgi.blog.yam.com/trackback/566961
原文:http://www.keyusoft.cn/Contentview.aspx?year=2005&month=$10&day=$19&postid=128
选择MySQL还是SQL Server
对于程序开发人员而言,目前使用最流行的两种后台数据库即为MySQL and SQL Server。这两者最基本的相似之处在于数据存储和属于查询系统。你可以使用SQL来访问这两种数据库的数据,因为它们都支持ANSI-SQL。还有,这两种数据库系统都支持二进制关键词和关键索引,这就大大地加快了查询速度。同时,二者也都提供支持XML的各种格式。
除了在显而易见的软件价格上的区别之外,这两个产品还有什么明显的区别吗?在这二者之间你是如何选择的?让我们看看这两个产品的主要的不同之处,包括发行费用,性能以及它们的安全性。
根本的区别是它们遵循的基本原则
二者所遵循的基本原则是它们的主要区别:开放vs保守。SQL服务器的狭隘的,保守的存储引擎与MySQL服务器的可扩展,开放的存储引擎绝然不同。虽然你可以使用SQL服务器的Sybase引擎,但MySQL能够提供更多种的选择,如MyISAM, Heap, InnoDB, and Berkeley DB。MySQL不完全支持陌生的关键词,所以它比SQL服务器要少一些相关的数据库。同时,MySQL也缺乏一些存储程序的功能,比如MyISAM引擎联支持交换功能。
发行费用:MySQL不全是免费,但很便宜
当提及发行的费用,这两个产品采用两种绝然不同的决策。对于SQL服务器,获取一个免费的开发费用最常的方式是购买微软的Office或者Visual Studio的费用。但是,如果你想用于商业产品的开发,你必须还要购买SQL Server Standard Edition。学校或非赢利的企业可以不考虑这一附加的费用。
性能:先进的MySQL
纯粹就性能而言,MySQL是相当出色的,因为它包含一个缺省桌面格式MyISAM。MyISAM 数据库与磁盘非常地兼容而不占用过多的CPU和内存。MySQL可以运行于Windows系统而不会发生冲突,在UNIX或类似UNIX系统上运行则更好。你还可以通过使用64位处理器来获取额外的一些性能。因为MySQL在内部里很多时候都使用64位的整数处理。Yahoo!商业网站就使用MySQL作为后台数据库。
当提及软件的性能,SQL服务器的稳定性要比它的竞争对手强很多。但是,这些特性也要付出代价的。比如,必须增加额外复杂操作,磁盘存储,内存损耗等等。如果你的硬件和软件不能充分支持SQL服务器,我建议你最好选择其他如DBMS数据库,因为这样你会得到更好的结果。
这两者数据库都能够在.NET或J2EE下运行正常,同样,都能够利用RAID。
安全功能
MySQL有一个用于改变数据的二进制日志。因为它是二进制,这一日志能够快速地从主机上复制数据到客户机上。即使服务器崩溃,这一二进制日志也会保持完整,而且复制的部分也不会受到损坏。
在SQL服务器中,你也可以记录SQL的有关查询,但这需要付出很高的代价。
安全性
这两个产品都有自己完整的安全机制。只要你遵循这些安全机制,一般程序都不会出现什么问题。这两者都使用缺省的IP端口,但是有时候很不幸,这些IP也会被一些黑客闯入。当然,你也可以自己设置这些IP端口。
恢复性:先进的SQL服务器
恢复性也是MySQL的一个特点,这主要表现在MyISAM配置中。这种方式有它固有的缺欠,如果你不慎损坏数据库,结果可能会导致所有的数据丢失。然而,对于SQL服务器而言就表现得很稳键。SQL服务器能够时刻监测数据交换点并能够把数据库损坏的过程保存下来。
根据需要决定你的选择
对于这两种数据库,如果非要让我说出到底哪一种更加出色,也许我会让你失望。以我的观点,任一对你的工作有帮助的数据库都是很好的数据库,没有哪一个数据库是绝对的出色,也没有哪一个数据库是绝对的差劲。我想要告诉你的是你应该多从你自己的需要出发,即你要完成什么样的任务?而不要单纯地从软件的功能出发。
如果你想建立一个.NET服务器体系,这一体系可以从多个不同平台访问数据,参与数据库的管理,那么你可以选用SQL服务器。如果你想建立一个第三方站点,这一站点可以从一些客户端读取数据,那么MySQL将是最好的选择。
原文:http://htm.winsteps.net/database/331.htm
MySQL和.Net2.0配合使用
MySql现在的最新版本是5.x.第一次接触它是在大二的时候,用php,那时好像还是4.x版本。
Mysql5增加很多新的功能,开始支持:存储过程、触发器、视图、信息架构视图等...
MySql在安装时一如既往的比较复杂,往往就是一个失败的提示,没有什么其它提示原因。
这是一篇文章,比较MySql和SqlServer的,http://htm.winsteps.net/database/331.htm
MySql中文网站http://www.mysql.cn/上资料很少,大多是些安装帮助。
要查资料还是去MySql的网站http://www.mysql.com/。
MySql现在有提供的各种连接工具(http://dev.mysql.com/downloads/connector/),.net下可以用的有Connector/ODBC和Connector/Net。
ODBC连接效率可能稍低,最好还是用Net直接的连接
这篇文章介绍了各种连接方法http://www.mysql.com/news-and-events/press-release/release_2002_10.html
1:ODBC连接
现在的版本是3.51,安装之后,可以这样操作:
// string conStr = "DRIVER = {MySQL ODBC 3.51 Driver}; SERVER = localhost; DATABASE =test; UID = root; PASSWORD=;";
//string conStr = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=test;USER=root;PASSWORD=;OPTION=3;";
string conStr = "provider = MySQL ODBC 3.51 Driver; SERVER = localhost; DATABASE =test; UID = root; PASSWORD=;";
try
{
OleDbConnection connection = new OleDbConnection(conStr);
connection.Open();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
2:Net连接:
MySQL Connector Net 1.0.7:有net1.0;net.1;net2.0;mono1.0四个版本的connector。免费
CoreLab.MySql 3.5:这是个商业的版本,试用期30天。
下边的代码是使用MySQL Connector Net 的例子。注意:他的Parameter的前缀是“?”而不是“@”。这个问题比较特殊。CoreLab里面的Parameter的前缀就是“@”.
string connStr = String.Format("server={0};user id={1}; password={2}; database={3}; pooling=false;port=3308", "localhost", "root", "", "test");
try
{
MySqlConnection myConn = new MySqlConnection(connStr);
myConn.Open();
MySqlCommand cmd = myConn.CreateCommand();
cmd.Parameters.Add("?DocName", MySqlDbType.VarChar, 50);
cmd.Parameters[0].Value = "test by code";
cmd.Parameters[0].SourceColumn = "DocName";
cmd.CommandText = "update t_docs set DocName=?DocName where DocId=4";
cmd.ExecuteNonQuery();
这是使用一个ORM时设置provider的例子
CustomProvider mysqlProvider = new CustomProvider("MySql.Data", "MySql.Data.MySqlClient.MySqlConnection", "MySql.Data.MySqlClient.MySqlDataAdapter");
mysqlProvider.StartDelimiter = "";//default is "/""
mysqlProvider.EndDelimiter = "";//default is "/""
mysqlProvider.ParameterPrefix = "?";//设置参数前缀
mysqlProvider.SelectPageQuery = "SELECT * LIMIT {0} OFFSET {1}";//设置分页算法
mysqlProvider.IdentityQuery = "SELECT LAST_INSERT_ID()";//设置获取刚刚插入记录Id的函数
3:OLE连接:
现在还没有来自官方的支持。
在vs2005中,直接引用for .net2.0版本的dll即可。至于那个商业版,就得费些功夫了,需要一个许可文件(拖动一个Conection组件到Form上就能自动创建该许可)
附,连接字符串可以到这里查询http://www.connectionstrings.com/, 够全的了。
分享到:
相关推荐
以上就是关于ASP.NET配置Web.config数据库连接的基本知识,通过合理的配置和使用,我们可以确保应用安全、高效地与数据库进行通信。在实际项目开发中,务必根据具体需求和环境调整配置,遵循最佳实践。
2.最新版本的ASP.NET.CORE.Web API 3.实现dbfrist和code 。 4.博客链接:https://blog.csdn.net/EAyayaya/article/details/124048491 5. 不是MVC方式 6.Entity Framework Core Entity Framework Core.Tools Entity ...
ASP.NET 2.0 Web数据库开发教程是一门深入学习如何在ASP.NET环境中构建与数据库交互的Web应用程序的课程。这门教程可能包含了多种技术、工具和最佳实践,旨在帮助开发者熟练掌握利用ASP.NET 2.0框架进行Web数据库...
ASP.NET Core MVC是一个高效、模块化的Web应用框架,它结合了ASP.NET Core和MVC(Model-View-Controller)设计模式。在这个实例中,我们将深入探讨如何使用Entity Framework (EF) Core来操作MySQL数据库,这是一个...
【标题】"Mysql+asp.net 数据库管理源代码"涉及的是使用ASP.NET技术与MySQL数据库相结合进行数据管理的应用场景。这一主题涵盖了多个关键知识点,包括ASP.NET开发环境的搭建、MySQL数据库的使用以及两者之间的交互。...
ASP.NET Web开发是一种微软公司推出的强大且高效的技术框架,用于构建动态、数据驱动的Web应用程序。本书《ASP.NET Web开发学习实录》的配套光盘提供了丰富的学习资源,旨在帮助读者深入理解和掌握ASP.NET的核心概念...
ASP.NET是微软公司推出的一种基于.NET Framework的Web应用程序开发框架,它为开发者提供了一种高效、强大且易于使用的工具来构建动态网站、Web应用程序和服务。本教程“使用ASP.NET技术开发网上书店”将深入探讨如何...
ASP.NET 2.0通常使用ADO.NET来与各种数据库(如SQL Server、MySQL等)进行交互。ADO.NET由一组组件构成,包括DataSet、DataTable、DataRow以及DataAdapter,它们提供了对数据库的强大访问和操作能力。 **3. 数据源...
ASP.NET Core 2.2是微软推出的一款高性能、跨平台的开源框架,用于构建Web应用程序。它是ASP.NET的全新版本,具有模块化、轻量级和高性能的特点,支持.NET Core和.NET Framework两种运行时环境。在ASP.NET Core 2.2...
ASP.NET Core同样支持数据库应用开发,并与EF Core紧密结合。 九、部署与调试 在完成ASP.NET数据库应用程序的开发后,可以通过IIS或IIS Express进行本地或远程部署。Visual Studio集成的调试工具能帮助开发者定位并...
VUE3.0+Antdv+Asp.net webapi开发的学生信息管理系统,主要包括学生管理,班级管理,成绩管理,课程管理,以及个人信息,用户管理,角色管理,菜单管理等组成部分,SQL Server 2012数据库,具体详细内容可参考本人的...
【新闻MYSQL.zip_MYSQL_asp.net mysql】是一个教学资源,主要涵盖了如何使用ASP.NET与MySQL数据库构建一个简单的新闻发布系统。这个系统对初学者来说是个很好的起点,能够帮助他们理解Web开发中的基本概念和技术。 ...
ASP.NET是一种微软开发的服务器端Web应用程序框架,用于构建动态网站、web应用和服务。它集成了强大的编程模型和丰富的功能,使得开发者可以高效地创建基于Web的应用程序。MySQL则是一种流行的开源关系型数据库管理...
ASP.NET是一种由微软开发的...总结而言,这个项目是一个全面的实践教程,涵盖了ASP.NET Web应用开发的多个重要方面,对于学习者来说,无论是提升技术技能还是理解实际工作流程管理系统的运作,都是非常有价值的资源。
本文档适用于熟悉.NET开发,特别是对ASP.NET Core 5有一定了解的开发者,旨在指导他们完成从环境准备到实际部署的全过程。 **介绍** IIS(Internet Information Services)是微软提供的Web服务器,能够托管各种Web...
ASP.NET是一种由微软开发的服务器端Web应用程序框架,用于构建动态网站、Web应用和Web服务。在这个基于WEB的作业管理系统中,ASP.NET扮演着核心角色,提供了一套完整的工具和库,使得开发者可以高效地构建功能丰富的...
ASP.NET Core 5.0 是一个高性能、模块化、跨平台的开发框架,用于构建现代云应用程序,包括WebAPI和BlazorWebAssembly在内...开发者可以借此项目学习到ASP.NET Core、Blazor、JWT和MySQL的集成应用,提升Web开发技能。
对于初学者,这是一个很好的实践项目,可以学习到Web应用开发的多个方面。而对于经验丰富的开发者,这可能是一个起点,可以在此基础上扩展更多功能,例如邮件过滤、垃圾邮件检测、多语言支持等。
ASP.NET是由微软公司推出的用于构建Web应用程序的框架,它基于.NET Framework,为开发者提供了高效、安全且可扩展的平台。在ASP.NET中,开发人员可以使用C#、VB.NET等编程语言编写服务器端代码,实现动态网页功能。...
1. ASP.NET基础:ASP.NET是微软开发的一种Web开发平台,它提供了丰富的控件、服务和框架,使得开发者可以使用C#或VB.NET等语言编写服务器端代码,创建交互性强、性能高的Web应用。此源码利用了ASP.NET的核心特性,如...