《CNET数据库应用闪电入门》由会员分享,可在线阅读,更多相关《CNET数据库应用闪电入门(84页珍藏版)》请在金锄头文库上搜索。
1、Simplicity is beauty - C#.NET 数据库应用数据库应用 闪电入门教程闪电入门教程Why such a fuss?Why such a fuss?n“蜡笔小编”学习一年半,困惑一大堆:n如何在程序中访问数据库n如何将网页和数据库联系起来n.NET程序中如何显示和修改数据中的数据n。n其实很简单,只需要闪电84分钟/页。2目标项目:网页聊天室n目的:做一个简单的聊天网页n支持多人同时使用该页面进行聊天n练习:n向数据库添加数据;n在网页上显示数据。3数据库/RDBMS,就是“表”们IdNameEmailaddress1San Z80 City Road2Si LNanji
2、ng Univ.3Wu WNewyork记录记录字段字段4下面在MySQL中建一个聊天用的表:QQMSG如果你不需要学习这些小儿科,猛击此按钮n首先安装免费的MySQLn可以从下载n也可以下载一个Apache+PHP+MySQL的捆绑包:AppServnAppServ下载地址:nhttp:/ n下面假定您的本机(localhost)上已经运行了MySQL,在3306端口5其次下载一个MySQL管理工具n现在MySQL的管理工具名字叫:nMySQL Workbenchn下载:http:/products/workbench/ n这个工具可以方便地在数据库中建表、浏览、修改等等。6上图!MySQL
3、 Workbench点这个点这个7双击双击双击双击testtest数据库,数据库,数据库,数据库,选为当前选为当前选为当前选为当前schemaschema,然后然后然后然后“add table”“add table”8表名:表名:qqmsg然后:然后:9建4个字段确定确定101112加点数据加点数据13保存保存14这个自动生成的这个自动生成的SQLSQL语句,语句,是我们学习的好模板!是我们学习的好模板!15好了,数据表准备好了n我们有一个MySQL数据库服务器运行于本机(localhost)n其中有一个数据库名为testnTest中有一个表名为qqmsgnQqmsg包含4个字段Lets ro
4、ll!16是个神马?n“ADO.NET 是一组向 .NET Framework 程序员公开数据访问服务的类。” -msdn数据库应用程序17访问数据库的一般步骤1.使用Connection对象建立数据库连接2.初始化Command对象,设置SQL命令3.执行SQL并获得返回数据结果不同的操作,以及不不同的操作,以及不同的数据库,有不同同的数据库,有不同的的ConnectionConnection和和CommandCommand的实现类,的实现类,例如:例如:MySqlCommandMySqlCommand。18说明1:Connection字符串nConnection的创建,使用Connecti
5、onString参数,格式为:n“server=host;user id=name;database=dbname;password=xxx”n例如:n“server=localhost;user id=root;database=test;password=12345”19说明2:Command对象nCommand一般代表一个要执行的SQL命令n例如n“select * from mytable”20说明3:执行Commandn根据实际的Command的不同,Command执行后返回的结果也不同n例如可以为一个IDataReader的实现,然后可以从该DataReader中获取读到的数据。2
6、1一个简单的例子:访问MySql数据库nMySql.Data.MySqlClient.MySqlConnection c = new MySql.Data.MySqlClient.MySqlConnection( server=localhost;user id=root;database=test;password=123“ );nc.Open();nMySqlCommand m = new MySqlCommand(select * from qqmsg, c);nMySqlDataReader r = m.ExecuteReader();请同志们认清形势,只有请同志们认清形势,只有4 4
7、行!行!22下面用一个窗体,运行一下这个小小4行程序2324做一个窗体,包含一个button,一个多行文本框25打开“解决方案资源管理器”26添加对“”的引用27为按钮编程n nusing ;MySqlConnection c = new MySqlConnection( server=localhost;user id=root;database=test;password=123);c.Open();MySqlCommand m = new MySqlCommand(select * from qqmsg, c);MySqlDataReader r = m.ExecuteReader();
8、String s = ;while (r.Read() s += r.GetString(0) + n + r.GetString(1) + n + r.GetString(2) + n + r.GetString(3) + n;richTextBox1.Text = s;c.Close();!获得当前数据行第1列的数据,并使用String类型28n这个例子这个例子够简单!够简单!29另一种访问MySql数据库的方法nLive long and prosper!Theres always another way.30打开:视图-服务器资源管理器31新建一个数据连接3233添加添加添加添加Bin
9、dingSourceBindingSource控控控控件,并设置件,并设置件,并设置件,并设置DatasourceDatasource属性属性属性属性3435363738添加DataGrid控件并绑定数据源39运行结果:竟然没有写代码!40再来看看如何在网页上连接数据库再来看看如何在网页上连接数据库就一点点不同。41新建一个网站(可参考(可参考(可参考(可参考闪电入门教程闪电入门教程闪电入门教程闪电入门教程)42打开服务器视图打开服务器视图添加一个数据库连接添加一个数据库连接434445在页面上面添加一个在页面上面添加一个sqlsql数据源数据源数据源数据源然后配置连接然后配置连接指向指向指向
10、指向46就选我们刚刚就选我们刚刚配置好的连接配置好的连接47注意注意MySQLMySQL不允许中不允许中括号,所以要手工写括号,所以要手工写SQLSQL语句语句4849!5051加一个加一个DateListDateList控件,控件,指向我们配置好的数指向我们配置好的数据源据源5253编辑显示模板编辑显示模板编辑显示模板编辑显示模板54其中发布日期字段(其中发布日期字段(postatpostat)修改一)修改一下显示格式,好看些!下显示格式,好看些!5556这就是初步效果了!5758填不进去东西!填不进去东西!填不进去东西!填不进去东西!仔细观察左上角仔细观察左上角仔细观察左上角仔细观察左上角
11、59为这个多行文本框加为这个多行文本框加一个一个“runat”属性并属性并设置为设置为“server”:runat=“server”60最后加一个最后加一个最后加一个最后加一个“ “发表发表发表发表” ”按钮按钮按钮按钮6162下面为按钮编写程序, 以提交留言n为简单起见,我们只放了一个文本框,不设置留言人的为简单起见,我们只放了一个文本框,不设置留言人的Email。nprotected void Button1_Click(object sender, EventArgs e)nn String s = TextArea1.Value;n SqlDataSource1.InsertComma
12、nd = n insert into qqmsg (email, msg, postat) values (,n + + s + ,n + + DateTime.Now + );n TextArea1.Value = SqlDataSource1.InsertCommand;n SqlDataSource1.Insert();n 6364Now Its Your Turn:n问题:n如果希望保存留言者的Email,应该如何修改程序?65嫌太简单,想做的复杂些?66复习一下:访问数据库的手工代码:n猛击67为Page_Load添加代码n删除页面中的DataGrid控件n双击页面空白处,为Page
13、_Load编写事件响应代码n别忘了添加引用和nusing MySql.Data.MySqlClient;68nvoid Page_Load(object sender, EventArgs e)void Page_Load(object sender, EventArgs e)n n MySql.Data.MySqlClient.MySqlConnection c = new MySql.Data.MySqlClient.MySqlConnection c = new MySql.Data.MySqlClient.MySqlConnection( MySql.Data.MySqlClient.
14、MySqlConnection( server=localhost;user id=root;database=test;password=123); server=localhost;user id=root;database=test;password=123);n c.Open(); c.Open();n MySqlCommand m = new MySqlCommand(select * from qqmsg, c); MySqlCommand m = new MySqlCommand(select * from qqmsg, c);n MySqlDataReader r = m.Ex
15、ecuteReader(); MySqlDataReader r = m.ExecuteReader();n while (r.Read() while (r.Read() n int id = r.GetInt16(id); int id = r.GetInt16(id);n String email = r.GetString(email); String email = r.GetString(email);n String msg = r.GetString(msg); String msg = r.GetString(msg);n String postat = r.GetStrin
16、g(postat); String postat = r.GetString(postat);n Response.Write( + id + + email +:);Response.Write( + id + + email +:);n Response.Write( + msg + ); Response.Write( + msg + );n Response.Write(); Response.Write();n Response.Write(postat); Response.Write(postat);n Response.Write(); Response.Write();n n
17、 r.Close();r.Close();n 连接数据库显示数据获取数据6970提交新留言还是原来的代码n原来的提交代码使用了nSqlDataSourcen控件n用MySqlConnection来写代码!71n1. 将nMySql.Data.MySqlClient.MySqlConnection c;n这个变量声明拿到函数外面,使之成为类变量,这样在按钮事件中就不用再次连接了。n2. 按钮事件代码:n protected void Button1_Click(object sender, EventArgs e)n n String msg = TextArea1.Value;n String
18、 sql = insert into qqmsg (email, msg, postat) values (,n + + msg + ,n + + DateTime.Now + );n MySqlCommand cmd = new MySqlCommand(sql, c);n cmd.ExecuteNonQuery();n 72思考:为什么出错,怎么解决?n这里有一个陷阱:你运行时候会出错!n异常:There is already an open DataReader associated with this Connection which must be closed first.知道答案
19、在。“全选69”,晚了73留言板做“聊天”用,别扭n功能需求:自动刷新最新的发言n实现途径:n1、用Ajax,进行局部刷新。n2、简单点的,嵌套一个IFrame ,设置frame页面的刷新时间n() n从而实现留言信息的自动刷新74我们采用第2种方法n先使用最简单的方法修改页面,只保留一个倒序显示的发言内容。75在页面中添加自动刷新的htmlnSqlDataSource1中的SQL改为:nselect * from qqmsg order by postat desc limit 10“n在段中加入n76页面运行结果(每5秒自动刷新)77再新建一个Web窗体:78增加一个IFramen在“源”
20、中后,加一句:nn切换到“设计”视图,适当调整一下大小n添加一个文本框和提交按钮79为按钮编写提交代码n protected void Button1_Click(object sender, EventArgs e)n n String msg = TextBox1.Text;n String sql = insert into qqmsg (email, msg, postat) values (,n + + msg + ,n + + DateTime.Now + );n SqlDataSource1.InsertCommand = sql;n SqlDataSource1.Insert();n 8081现在总结一下nConnection, Command, ExcutenDB控件n数据源n添加引用nUsingn绑定n表单nrunat=“server”82 作 业n做一个你自己的聊天网页n要加上Email字段n如果希望回车(而不是点击“提交”按钮)也可以提交发言,怎么改?n能在发言里面包含引号(”)吗?若希望支持这些特殊符号,怎么做?不要学它!83 System Terminated.84