实验六使用NET数据提供程序访问数 据库 实验目的 1、掌握使用、NET对象访问数据库的步骤 2、掌握 Connection对象、 Command对象、 DataReader对象的使 用方法 实验内容 (1)创建并打开与 SQL Server70或更高版本的数据库的连接。连 接 SQL Server数据库 Student DB。在 Label控件中显示连接字 符串和打开、关闭当前数据库的连接状态。 ①设计页面。新建一个 ASPNET网站,向页面中添加一个 Label控 件 ②在 web. config文件中添加连接字符串。按照如图10-2所示中的代 码,在 web. config文件中添加连接字符串。 onnection Strings> ③编写事件代码。 在命名空间区域中添加如下内容: using System. Data using System. Data SqlClient; using System Configuration
实验六 使用.NET 数据提供程序访问数 据库 实验目的 1、 掌握使用.NET 对象访问数据库的步骤。 2、 掌握 Connection 对象、Command 对象、DataReader 对象的使 用方法。 实验内容 (1) 创建并打开与 SQL Server 7.0 或更高版本的数据库的连接。连 接 SQL Server 数据库 StudentDB。在 Label 控件中显示连接字 符串和打开、关闭当前数据库的连接状态。 ① 设计页面。新建一个 ASP.NET 网站,向页面中添加一个 Label 控 件。 ② 在 web.config 文件中添加连接字符串。按照如图 10-2 所示中的代 码,在 web.config 文件中添加连接字符串。 ③ 编写事件代码。 在命名空间区域中添加如下内容: using System.Data; using System.Data.SqlClient; using System.Configuration;
Default. aspx页面装入时执行的事件过程代码如下 protected void Page Load(object sender, EventArgs e) string consTr= ConfigurationManager Connection Strings["StudentDBConnectionString"]. ToStringO SqlConnection sqlconn=new SqlConnection(consTr); Labell Text =connStr +" LabellText= Labell Text + sqlconn State ToString(+<br Iconn open(; Labell Text=Labell Text sqlconn State ToString(+"<br A sqIconn. Close sqlconn=null (2)使用 SqlCommand对象的 ExecuteScalarO方法来返回 Student Info表中记录的数目( SELECT语句使用 COUNT聚合 函数返回指定表中的行数的单个值) protected void Page Load(object sender, EventArgs e) string connString Configuration Manager. Connection Strings["Student D BConnectionString"].ToString(; Int32 count=0;∥1计学生人数 using( SqlConnection conn= new SqlConnection( connString)∥创建 Connection对象conn CM2 Cring sqlstr="SELECT COUN+) FROM StudentInfo:OL字符串 nd ordersCMd=new SqlCommand(sqlstr, conn) conn. Open count=(lnt32) orders CMD. Execute Scalar,∥将返回的记录数强制转换成整型 catch( Exception ex)/捕捉错误 Response. Write( ex Message),∥显示出错信息 Response. Write("学生总数为”+ count. aStringe+"人!"),∥,示“学生总数为XX人!
Default.aspx 页面装入时执行的事件过程代码如下: protected void Page_Load(object sender, EventArgs e) { string connStr = ConfigurationManager.ConnectionStrings["StudentDBConnectionString"].ToString(); SqlConnection sqlconn = new SqlConnection(connStr); Label1.Text = connStr + ""; Label1.Text = Label1.Text + sqlconn.State.ToString() + ""; sqlconn.Open(); Label1.Text = Label1.Text + sqlconn.State.ToString() + ""; sqlcommand = null; sqlconn.Close(); sqlconn = null; } (2) 使 用 SqlCommand 对 象 的 ExecuteScalar() 方法来返回 StudentInfo 表中记录的数目(SELECT 语句使用 COUNT 聚合 函数返回指定表中的行数的单个值) protected void Page_Load(object sender, EventArgs e) { string connString = ConfigurationManager.ConnectionStrings["StudentDBConnectionString"].ToString(); Int32 count = 0; //统计学生人数 using (SqlConnection conn = new SqlConnection(connString)) //创建 Connection 对象 conn { string sqlstr = "SELECT COUNT(*) FROM StudentInfo"; //SQL 字符串 SqlCommand ordersCMD = new SqlCommand(sqlstr, conn); try { conn.Open(); count = (Int32)ordersCMD.ExecuteScalar(); //将返回的记录数强制转换成整型 } catch (Exception ex) //捕捉错误 { Response.Write(ex.Message); //显示出错信息 } } Response.Write("学生总数为" + count.ToString() + "人!"); //显示“学生总数为 XX 人!” }
(3)创建 Command对象,执行一个 INSERT语句,然后使用 ExecuteNonQuery方法将一个记录插入到 StudentInfo表中。 protected void Page Load(object sender, EventArgs e) string connString Configuration Manager. Connection Strings["StudentDBConnection String"].ToString(; using( SqlConnection conn= new SqlConnection( conn String)∥创建 Connection对象conn string query String="INSERT INTO StudentInfo"+ "(StudentID, StudentName) Values(200902602035', 'E2 2")" conn Open o Sqlcommand command= new SqlCommand(queryString, conn); Int32 recordsAffected =command. ExecuteNon Queryo Response. Write("插入记录的行数:"+ records Affected) (4)创建 Datareader对象,读取 Student DB数据库 StudentInfo表中 的全部数据 protected void Page Load(object sender, EventArgs e) string connString ConfigurationManager Connection Strings["StudentDBConnectionString"]. ToStringO using(SqlConnection conn =new SqlConnection( connString) string sqlstr="SELECT* FROM StudentInfo Sqlcommand command= new SqlCommand( sqlstr, conn) conn. Open SqlDataReader reader= command. ExecuteReadero while(reader. Reado) Response. Write(reader["StudentID"ToString(+ +( string)reader"StudentName"+""+ reader. Get Value(3).ToString (+ +reader. Get Value(4 ). ToString (+""); reader. Close O (5)将查询结果在 Grid view控件中显示。 protected void Page Load(object sender, EventArgs e)
(3) 创建 Command 对象,执行一个 INSERT 语句,然后使用 ExecuteNonQuery()方法将一个记录插入到 StudentInfo 表中。 protected void Page_Load(object sender, EventArgs e) { string connString = ConfigurationManager.ConnectionStrings["StudentDBConnectionString"].ToString(); using (SqlConnection conn = new SqlConnection(connString)) //创建 Connection 对象 conn { string queryString = "INSERT INTO StudentInfo" + "(StudentID, StudentName) Values('200902602035', '白雪 2')"; conn.Open(); SqlCommand command = new SqlCommand(queryString, conn); Int32 recordsAffected = command.ExecuteNonQuery(); Response.Write("插入记录的行数:" + recordsAffected); } } (4) 创建 DataReader 对象,读取 StudentDB 数据库 StudentInfo 表中 的全部数据。 protected void Page_Load(object sender, EventArgs e) { string connString = ConfigurationManager.ConnectionStrings["StudentDBConnectionString"].ToString(); using (SqlConnection conn = new SqlConnection(connString)) { string sqlstr = "SELECT * FROM StudentInfo"; SqlCommand command= new SqlCommand(sqlstr, conn); conn.Open(); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { Response.Write(reader["StudentID"].ToString() + " " + (string)reader["StudentName"] + " " + reader.GetValue(3).ToString() + " " + reader.GetValue(4).ToString() + ""); } reader.Close (); } } (5) 将查询结果在 GridView 控件中显示。 protected void Page_Load(object sender, EventArgs e)
string conn String ConfigurationManager Connection Strings("StudentDBConnectionString"].ToString 0: using (SqlConnection conn =new SqlConnection(connString)) string sqlstr="SELECT* FROM StudentInfo SqlCommand command=new SqlCommand( sqlstr, conn); conn.Open SqlDataReader reader =command. ExecuteReaderO Grid Viewl DataSource reader Grid Viewl Databind( reader. Close( (6)创建 Command对象,执行带参数的存储过程 up FindStudentInfo protected void Page Load(object sender, EventArgs e) string connString ConfigurationManager Connection Strings[ "Student DBConnectionString"].ToStringO using(Sql Connection conn=new SqlConnection(connString)) Sqlcommand sqlcommand =new Sqlcommand("up FindStudentInfo",conn); sqlcommand Command Type =Command Type StoredProcedure SqlParameter stName new SqlParameter("@StudentName", SqlDbType. NChar, 10) shAme.Vae="张三丰"; command Parameters. Add(st Name) conn. Open SqlDataReader reader=sqlcommand. ExecuteReadero while(reader. Reado) Response. Write( reader[0] +""+ reader[ 1]+""+ reader[2]+""+reader [3]+");
{ string connString = ConfigurationManager.ConnectionStrings["StudentDBConnectionString"].ToString(); using (SqlConnection conn = new SqlConnection(connString)) { string sqlstr = "SELECT * FROM StudentInfo"; SqlCommand command= new SqlCommand(sqlstr, conn); conn.Open(); SqlDataReader reader = command.ExecuteReader(); GridView1.DataSource = reader; GridView1.DataBind(); reader.Close(); } } (6)创建 Command 对象,执行带参数的存储过程 up_FindStudentInfo protected void Page_Load(object sender, EventArgs e) { string connString = ConfigurationManager.ConnectionStrings["StudentDBConnectionString"].ToString(); using (SqlConnection conn = new SqlConnection(connString)) { SqlCommand sqlcommand = new SqlCommand("up_FindStudentInfo",conn); sqlcommand.CommandType = CommandType.StoredProcedure; SqlParameter stName = new SqlParameter("@StudentName", SqlDbType.NChar,10); stName.Value = "张三丰"; sqlcommand.Parameters.Add(stName); conn.Open(); SqlDataReader reader=sqlcommand.ExecuteReader(); while (reader.Read()) { Response.Write(reader[0] + " " + reader[1] + " " + reader[2] +" "+reader[3]+ ""); } } }