经验之谈:MySQL与ASP.NET配合更强大[2]

经验之谈:MySQL与ASP.NET配合更强大[2],第1张

连接 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 方法的指针 指定了显示结果集的当前行(在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 环境下高度灵活的开发平台

lishixinzhi/Article/program/net/201311/15424

关系:

1、服务器位于网络和数据库之间,服务器是为应用程序提供业务逻辑的。是基于组件的,位于以服务器为中心的架构的中间件。

2、这个架构通常是一个主要的基于Web的界面。中间件是业务逻辑所在的应用服务器。而第三层,后端是负责数据库的服务器。应用程序服务器充当用户和数据库之间的交互。

3、应用服务器通过各种协议向客户端应用程序打开业务逻辑。还可以包括计算机,web服务器或其他应用服务器上的图形用户界面。业务逻辑通过组件API。管理自己的资源以及执行安全性,事务处理,资源和连接池以及消息传递。

扩展资料:

相互之间的优势

1、当需要与现有数据库和服务器(如Web服务器)集成时,应使用应用程序服务器。可以通过启用集中式方法来提供应用程序更新和升级来提供数据和代码的完整性。

2、可伸缩性是使用应用服务器的另一个原因和好处。应用程序服务器可以与数据库连接。这意味着企业可以扩展Web服务器群,而不需要增加数据库连接的数量。

3、另一个好处是安全。从网页到数据库的直接链接如果暴露,可导致SQL注入攻击基础架构。通过单独的数据访问层执行数据验证和/或显示业务逻辑,可以确保以Web表单输入的文本不被用作SQL调用。

通过集中身份验证过程以及数据访问管理,还可以提高安全性。可以通过对网络流量进行限制来提高对性能要求高的应用程序的性能。

比如说,数据库一今天有更新,数据库二必须数据和数据库,比如说,数据库一今天有更新,数据库二必须数据和数据库是一样的,“当数据库一服务器挂了之后网站不受影响,转去访问数据库服务器二”
这个是网站程序去控制的,在数据库连接配置文件里,写个js或是php上面的小程序,当数据库一错误,连接数据库二。
下面是同步数据库的配置:
两台服务器,分别安装好Mysql,都安装在 /usr/local/mysql 目录下(安装步骤省略,请参考相关文档),两台服务器的IP分别是19216801和19216802,我们把19216801作为master数据库,把19216802作为slave服务器,我们采用单向同步的方式,就是master的数据是主的数据,然后slave主动去master哪儿同步数据回来。
两台服务器的配置一样,我们把关键的配置文件拷贝一下,默认的配置文件是在 /usr/local/mysql/share/mysql目录下,分别有 my-largecnf, my-mediumcnf, my-smallcnf等几个文家,我们只是测试,使用my-mediumcnf就行了。mysql安装完后,默认的配置文件是指定在数据库存放目录下的,我们用的是41X的,所以配置文件就应该在 /usr/local/mysql/var 目录下,于是把配置文件拷贝过去:
cp /usr/local/mysql/share/mysql/my-mediumcnf /usr/local/mysql/var/mycnf
两台服务器做相同的拷贝配置文件 *** 作。
2 配置Master服务器
我们要把19216801配置为主mysql服务器(master),那么我们就要考虑我们需要同步那个数据库,使用那个用户同步,我们这里为了简单起见,就使用root用户进行同步,并且只需要同步数据库abc。
打开配置文件:
vi /usr/local/mysql/var/mycnf
找到一下信息:
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 1 //1为master,2为salve
添加两行:
sql-bin-update-same //同步形式
binlog-do-db = abc //要同步的数据库
重启19216801的mysql服务器:
/usr/local/mysql/bin/mysqladmin shutdown
/usr/local/mysql/bin/mysqld_safe --user=mysql &
3 配置Slave服务器
我们的slave服务器主要是主动去master服务器同步数据回来,我们编辑配置文件:
vi /usr/local/mysql/var/mycnf
找到下面类似的信息:
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 1
把上面的server-id修改为2,同时添加一些信息:
server-id = 2 //本Mysql是slave服务器
master-host = 19216801 //master服务器的IP
master-user = root //连接master服务器的用户
master-password = '' //连接master服务器的密码
master-port = 3306 //连接端口
master-connect-retry = 10 //重试次数
replicate-do-db = abc //要同步的数据库
log-slave-updates //同步的形式
重启19216802的mysql服务器:
/usr/local/mysql/bin/mysqladmin shutdown
/usr/local/mysql/bin/mysqld_safe --user=mysql &
4 测试安装
首先查看一下slave的主机日志:
cat /usr/local/mysql/var/xxxxx_err (xxx是主机名)
检查是否连接正常, 看到类似这样的信息就成功了
051031 11:42:40 mysqld started
051031 11:42:41 InnoDB: Started; log sequence number 0 43634
/usr/local/mysql/libexec/mysqld: ready for connections
Version: '4115-log' socket: '/tmp/mysqlsock' port: 3306 Source distribution
051031 11:42:41 [Note] Slave SQL thread initialized, starting replication in log 'FIRST'
at position 0, relay log '/new4-relay-bin000001' position: 4
051031 11:43:21 [Note] Slave I/O thread: connected to master 'root@19216801:3306',
replication started in log 'FIRST' at position 4
在Master查看信息
/usr/local/mysql/bin/mysql -u root
查看master状态:
mysql> show master status;
查看Master下mysql进程信息:
mysql> show processlist;
在slave上查看信息:
/usr/local/mysql/bin/mysql -u root
查看slave状态:
mysql> show slave status;
查看slave下mysql进程信息:
mysql> show processlist;
你再在master的abc库里建立表结构并且插入数据,然后检查slave有没有同步这些数据,就能够检查出是否设置成功。
最后,如果有兴趣的话,可以研究一下双击热备份,或者一台master,多台slave的同步实现。
我是饮食web,如果看不懂可以追问,我上线了可以帮你解答

html+css+javascript:用于显示网页和做出网页前端显示效果的技术,它们是唯一能够直接被浏览器解释执行的东西(javascript也可以用于后台,但是这时他叫nodejs)
php:一种动态网站开发语言,用于接收和处理用户请求,实现请求数据和结果数据的交互
Apache服务器:提供一个接口,来接收用户请求,并调用相应模块相应请求;
mysql:一种关系型数据库,用于存储数据。
这几个基本上组成了整个web服务

我们有两种方法:
一种是在ODBC数据源中建立一个DSN。具体方法是:
1、打开控制面板中的ODBD数据源;
2、选择系统DSN,添加一个新的DSN驱动程序;
3、选择MyODBD,出现一个对话框供输入MySQL:
(1)Windows DSN name:所要建立DSN的名称;
(2)MySQL Host (name or ip):MySQL服务器的名称或IP地址。一般填LocalHost ;
(3) MySQL database name:需要使用数据库的名称。
4、在MySQL管理程序中建立数据库。以数据库chunfeng为例,内有user数据表,两个字段分别是:username和password,我们可以试着加入几个记录:
(1)user:连接数据库的用户名。可填root超级用户;
(2)password:连接数据库用户口令。可不填;
(3)Port(if not 3306):MySQL在服务器的端口。填默认为3306;
(4)SQL command on connect:使用SQL命令连接数据库。可不填。
全部填完后按OK保存。
好了,我们来连接数据库,ASP代码如下:<%strConnection = "dsn=chunfeng;driver={myodbd driver};server=localhost;uid=root;pwd=; database=chunfeng"
Set adoDataConn = ServerCreateObject("ADODBConnection")
adoDataConnOpen strConnection
strQuery = "SELECT FROM user"
Set rs = adoDataConnExecute(strQuery)
If Not rsBOF Then%<TABLE<TR<TD<b用户名</b</TD
<TD<b口令</b</TD</TR<%Do While Not rsEOF%<TR<TD<%=rs("username")%</TD
<TD<%=rs("password")%</TD</TR<%rsMoveNextLoop%</TABLE<%ElseResponseWrite("Sorry, no data found")End IfrsCloseadoDataConnClose
Set adoDataConn = Nothing
Set rsEmailData = Nothing%另一种方法就是把上面ASP代码第二行代码改为:
并且无需建立系统DSN,也不需要用户名和口令。不过不推荐使用这种方法。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13418367.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-01
下一篇 2023-08-01

发表评论

登录后才能评论

评论列表(0条)

保存