第六章使用ADO.NET连接数据库2课程回顾数组的定义和赋值while循环结构do…while循环结构for循环结构foreach循环结构ViewState的使用3技能展示了解ADO.NET会使用Connection对象连接数据库会使用Command对象操作数据库会使用DataReader对象读取数据掌握Session对象和Response对象的用法掌握数据源控件SqlDataSource的用法掌握FormView控件的用法4本章结构使用ADO.NET连接数据库ADO.NETADO.NET介绍Connection对象SqlDataSource控件Formview控件使用控件操作数据库Command对象DataReader对象Response对象Session对象5ADO.NETInternetWeb服务器数据库服务器LAN6ADO.NETADO.NET是什么◦一组用于和数据库进行交互的.NET对象ADO.NET对象的组成ASP.NET客户端DataSetDataAdapterDataReaderCommandConnection数据库7ADO.NET的对象ADO.NET对象的类型类型引用命名空间核心对象名称SQLSystem.Data.SqlClientSqlConnectionSqlCommandSqlDataAdapterSqlDataReaderOLEDBSystem.Data.OleDbOleDbConnectionOleDbCommandOleDbDataAdapterOleDbDataReaderOracle……8SqlConnectionSqlConnection对象◦数据库连接字符串server=服务器名;database=数据库名;UID=用户名;Password=密码DataSource=服务器名;InitialCatalog=数据库名;UserID=用户名;Pwd=密码◦使用SqlConnection对象步骤一创建连接对象步骤二使用ConnectionString属性设置连接字符串SqlConnectionconn=newconn.ConnectionString=“DataSource=.;InitialCatalog=CompanySite;UserID=sa;Pwd=******”;属性new关键字9SqlConnectionSqlConnection对象◦使用SqlConnection对象步骤三使用Open方法打开连接步骤四操作数据库步骤五关闭数据库连接步骤一和步骤二可以合为一步conn.Open();conn.Close();SqlConnectionconn=newSqlConnection(“DataSource=.;InitialCatalog=CompanySite;UserID=sa;Pwd=******”);连接字符串作对象参数10SqlConnectionSqlConnection对象◦让网站共享连接字符串使用web.config保存连接字符串在程序中得到连接字符串connectionStringsaddname=siteConnconnectionString=DataSource=.;InitialCatalog=CompanySite;UserID=sa;Pwd=*//connectionStrings名称stringSqlstr=ConfigurationManager.ConnectionStrings[siteConn].ConnectionString;名称,注意对应连接字符串集合String类型11案例:连接数据库需求描述◦连接数据库并提示实现思路◦引用System.Data.SqlClient命名空间◦使用SqlConnection对象◦使用Open方法打开数据库连接◦使用Close方法关闭数据库连接◦使用Response对象进行提示Response.Write(数据库连接成功);12SqlCommandSqlCommand对象◦负责操作数据库的对象◦使用SqlCommand对象步骤一创建SqlCommand对象步骤二通过Connection属性设置连接对象通过CommandText属性设置SQL语句步骤一和步骤二可以合为一步SqlCommandcmd=newSqlCommand();cmd.Connection=conn;cmd.CommandText=“INSERTINTO…”;SqlCommandcmd=newSqlCommand(“INSERTINTO…”,conn);数据库连接对象13SqlCommandSqlCommand对象◦使用SqlCommand对象步骤三通过方法执行命令方法名返回类型说明ExecuteNonQueryint执行SQL并返回受影响的行数ExecuteScalarobject执行SQL并返回第一行第一列数据ExecuteReaderSqlDataReader返回只读的数据流对象14案例:增加问卷调查需求描述◦增加调查问卷名称(主表)◦增加调查问卷题目(从表)◦页面输入完整性和数据类型验证◦提交成功提示15案例:增加问卷调查实现思路◦使用RequiredFiedValidator控件验证输入完整性◦使用CompareValidator控件验证输入时间类型◦使用RegisterClientScriptBlock方法提示消息RegisterClientScriptBlock(alert,scriptalert('添加调查问卷成功!')/script);字符串参数1字符串参数2开始结束建立连接对象建立SqlCommand对象打开连接使用SqlCommand对象插入主表数据使用SqlCommand对象查询主表数据ID使用SqlCommand对象添加从表数据关闭连接16SqlDataReaderSqlDataReader对象◦用来读取一行或多行数据◦创建SqlDataReader对象◦使用SqlDataReader对象读取数据SqlDataReaderdr=cmd.ExecuteReader();SqlCommand对象stringname=dr[0].ToString();stringsex=dr[“sex”].ToString();下标字段名17SqlDataReaderSqlDataReader对象◦读取一行数据◦必须关闭SqlDataReader对象dr.close();if(dr.Read()){……}读取多行数据while(dr.Read()){……}使用Read方法18案例:用户登录需求描述◦输入用户名和密码登录页面◦使用用户表中的用户信息◦保存用户身份状态19案例:用户登录实现思路◦使用SqlDataReader读取一行数据◦使用Session对象用来保存和用户相关的信息,可以在所有页面使用Session对象具有生存期使用Session对象保存数据获取Session数据Session[“name”]=TextBox1.Text;TextBox2.Text=Session[“name”].ToString()object类型字符串类型键名20案例:用户登录实现思路◦使用Session对象清除当前用户单个Session数据清除当前用户所有Session数据Session[“name”]=null;//方法1Session.Remove(“name”);//方法2Session.Abandon();方法关键字方法21小结请思考:◦要建立程序与数据库的连接,使用什么对象?◦若要更新用户表中用户的记录,使用Command对象的什么方法?◦查询问卷调查表第一行数据的ID,使用Command对象的什么方法?◦使用什么对象可以读取多行数据?◦使用哪些对象必须关闭?22SqlDataSource控件SqlDataSource控件◦用来访问关系数据库的控件使用SqlDataSource控件的优点◦支持配置生成代码,适应快速开发◦支持参数化操作数据库的方式,安全性高配置SqlDataSource控件◦添加SqlDataSource控件◦配置连接字符串◦配置Select语句◦高级SQL生成选项(插入、修改和删除语句)23SqlDataSource控件配置SqlDataSource控件asp:SqlDataSourceID=SqlDataSource1runat=serverConnectionString=%$ConnectionStrings:siteConn%SelectCommand=SELECT*FROM[User]DeleteCommand=DELETEFROM[User]WHERE[userId]=@userIdInsertCommand=INSERTINTO[User]([loginName],[password],[name],[admin])VALUES(@loginName,@password,@name,@admin)UpdateCommand=UPDATE[User]SET[loginName]=@loginName,[password]=@password,[name]=@name,[admin]=@adminWHERE[userId]=@userId连接字符串读取语句删除语句插入语句更新语句字段参数24SqlDataSource控件配置SqlDataSource控件DeleteParametersasp:ParameterName=userIdType=Int32//DeleteParametersUpdateParametersasp:ParameterName=loginNameType=String/asp:ParameterName=passwordType=String/asp:ParameterName=nameType=String/asp:ParameterName=adminType=Boolean/asp:ParameterName=userIdType=Int32//UpdateParametersInsertParametersasp:ParameterName=loginNameType=String/....../InsertParameters参数个数要对应参数名称要对应数据类型删除参数修改参数插入参数25FormView控件FormView控件◦显示数据和操作数据的控件FormView的功能◦显示数据库表中的一行数据◦添加数据◦修改数据◦支持配合SqlDataSource控件使用◦支持配置生成代码26FormView控件FormView控件的常用属性FormView控件的常用事件属性名描述DataSourceID数据源控件IDDefaultMode控件的默认行为ReadOnly、Insert和Edit事件名描述ItemInserting对数据源执行插入命令前触发ItemInserted对数据源执行插入命令后触发ItemUpdating对数据源执行修改命令前触发ItemUpdated对数据源执行修改命令后触发27FormView控件FormView控件的模板标记◦模板标记是放置控件、HTML和嵌套代码的容器◦嵌套代码的格式%#表达式%◦三种模板标记ItemTemplate用来显示数据EditItemTemplate用来修改数据InsertItemTemplate用来插入数据%#Eval(“loginName”)%%#Bind(loginName)%用于显示数据用于显示、修改或插入数据28案例:添加用户数据需求描述◦将用户数据添加到用户表中◦验证用户名是否已经存在◦添加用户成功需要提示29案例:添加用户数据实现思路◦使用SqlDataSource控件◦使用Form