《数据库应用系统设计实验报告(共16页).doc》由会员分享,可在线阅读,更多相关《数据库应用系统设计实验报告(共16页).doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上计算机与信息工程系数据库应用系统设计实验报告专 业:计算机科学与技术班 级: 计科072 班 学 号: 姓 名: 指导老师: 实验一、数据库应用系统设计入门一、实验目的与要求通过一个简单程序示例,熟悉ADO.NET 编程入门。二、实验环境1、WindowsP操作系统。2、SQL2005 数据库。3、VS2008 编程环境三、实验内容1. 初步建立一个简单数据库(包括表用户)2. 编写程序,和数据库进行连接3. 编译、调试程序,观察运行结果四、实验步骤1、使用SQL2005,建立一个数据库,包含两张表(学生表(学号、姓名,年龄,班级)、老师表(工号、姓名,年龄)。并随便
2、插入几条记录数据,为下一步查询进行准备。2、 建立一个用户,把用户和数据库权限相关联。3、 分别使用SSPI安全方式和用户名密码安全方式和数据库进行连接。4、 使用插入命令在表中插入记录,同时使用查询命令观察返回结果。五、实验中的注意事项1、输入程序时严格区分中文字符(,。;)和ASCII码下的(,.;)的区别。2、在程序开始使用using语句包含正确的库。六、实验代码建表:插入数据:/ string connectionstring = server=localhost;database=student;integrated security=SSPI;string connectionst
3、ring = server=localhost;database=student;uid=sa;pwd=123; SqlConnection con = new SqlConnection(connectionstring); con.Open(); SqlCommand com = con.CreateCommand(); com.CommandText = insert into classes(classid,classname) values(12,dd);com.ExecuteNonQuery();查询数据: / string connectionstring = server=lo
4、calhost;database=student;integrated security=SSPI; string connectionstring = server=localhost;database=student;uid=sa;pwd=123; SqlConnection con = new SqlConnection(connectionstring); con.Open(); SqlCommand com = con.CreateCommand(); com.CommandText = select * from classes; SqlDataReader dr = com.Ex
5、ecuteReader(); while (dr.Read() Console.WriteLine(classid=+drclassid+ classname=+drclassname); con.Close();数据更新:public static void myupdate() string connectionstring = server=localhost;database=student;integrated security=SSPI; SqlConnection con = new SqlConnection(connectionstring); con.Open(); Sql
6、Command com = con.CreateCommand(); com.CommandText = update classes set classname=ww where classid=12; com.ExecuteNonQuery();七、实验心得这次实验中,我尝试了如何在.net编程环境下,进行数据库的连接,以及通过这个连接,在数据库中读取,插入和更新数据。在这个环境下有2种数据库连接认证方式:一种是sql server自己的认证:string connectionstring = server=localhost;database=student;uid=sa;pwd=123
7、;一个是windows的集成认证:string connectionstring = server=localhost;database=student;integratedsecurity=SSPI;我们可以选择其中的一种进行数据库连接。实验按要求完成。实验二、Commad类进行数据操作一、 实验目的与要求通过上机实验,掌握参数化命令的使用方法。二、 实验环境1、WindowsP操作系统。2、SQL2005 数据库。3、VS2008 编程环境三、实验内容进行插入,更改、删除的参数化命令的学习。四、实验步骤1、在实验一的基础上,两个表内各插入几条数据。2、编写程序,可以通过参数化方式进行记录的
8、插入,更改、删除。3、在控制台输入不同的参数,达到不同的插入,更改、删除记录,观察结果。五、实验中的注意事项注意把命令参数设置为可以调节,在控制台输入不同参数,返回不同命令结果。六、实验代码插入:public static void myinsert(int id,String name) / string connectionstring = server=localhost;database=student;integrated security=SSPI; string connectionstring = server=localhost;database=student;uid=sa
9、;pwd=123; SqlConnection con = new SqlConnection(connectionstring); con.Open(); SqlCommand com = con.CreateCommand(); com.CommandText = insert into classes(classid,classname) values(id,name);com.Parameters.Add(id,SqlDbType.Number);com.Parameters.Add(name,SqlDbType.NVarChar,20);com.Parametersid.value=
10、id;com.Patametersname.value=name;com.ExecuteNonQuery();修改:public static void myupdate(int id,String name) string connectionstring = server=localhost;database=student;uid=sa;pwd=123; SqlConnection con = new SqlConnection(connectionstring); con.Open(); SqlCommand com = con.CreateCommand(); com.Command
11、Text = update classes set classname=name where classid=id; com.Parameters.Add(id,SqlDbType.Number); com.Parameters.Add(name,SqlDbType.NVarChar,20); com.Parametersid.value=id; com.Patametersname.value=name;com.ExecuteNonQuery(); 查询:public static void myselect(String name) /string connectionstring = s
12、erver=localhost;database=student;integrated security=SSPI; string connectionstring = server=localhost;database=student;uid=sa;pwd=123; SqlConnection con = new SqlConnection(connectionstring); con.Open(); SqlCommand com = con.CreateCommand(); com.CommandText = select * from classes where classname=na
13、me; com.Parameters.Add(name,SqlDbType.NVarChar,20); com.Patametersname.value=name; SqlDataReader dr = com.ExecuteReader(); while (dr.Read() Console.WriteLine(classid=+drclassid+classname=+drclassname); con.Close();主函数: static void Main(string args) String strchar; strchar=console.readline(); int id=
14、int.Parse(str); String name =console.readline(); insert.myinsert(id,name); /select.myselect(name); /update.myupdate(id,name); 七、实验心得在这次的实验中,我把上次的代码进行了更改,在sql代码中插入了变量参数,使其可以通过参数化方式进行记录的插入,更改、删除。我们将sql中要传入参数的地方都用参数名代替,然后在接着的代码中对这些参数用com.Parameters.Add(id,SqlDbType.Number);进行注册,并且指明参数类型,再接下来就是对这些参数进行赋值
15、,这样看起来是比较繁琐,但是,比起用字符串连接符插入参数,更加清晰易懂,更加规范,而且,在批量插入规律数据时,要方便。实验按要求完成。实验三、Pubs数据库操作一、 实验目的与要求通过上机实验,完成对Pubs数据库的操作。二、 实验环境1、 WindowsP操作系统。2、 SQL2005 数据库。3、 VS2008 编程环境三、实验内容1. 通过使用DadaSet类,读取数据库的内容。2. 读取内容显示四、实验步骤1、使用DadaSet类读取程序。2、调试运行五、实验中的注意事项DadaSet类的使用六、实验代码 string connectionstring = server=localho
16、st;database=student;uid=sa;pwd=123; SqlConnection con = new SqlConnection(connectionstring); con.Open(); SqlCommand com = con.CreateCommand(); com.CommandText = select * from classes; DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = com; int n = da.Fill(ds, cl
17、ass); con.Close(); DataTable dt = ds.Tablesclass; Console.WriteLine(数据行:+n); foreach(DataRow dr in dt.Rows) Console.WriteLine(classid:=+drclassid); Console.WriteLine(classname=+ drclassname); con.Close();七、实验心得通过这次实验我学会了如何用dataset来读取数据库中的数据,用它我们可以将数据存储在数据集内,这样我们就可以不用频繁的操作数据库,我们的对数据的修改都可以在数据集上操作,在必要的
18、时候再写回数据库,提高系统性能。我们用SqlDataAdapter 把数据库中的数据读入,在用他的fill方法把数据填入dataset中,我们从dataset中取出填入的数据到一个datatable中,就可以对它进行相关的数据操作了。实验按要求完成。实验四、学生数据库操作一、实验目的与要求通过上机实验,通过参数化方法调用存储过程完成对学生数据库的操作。二、实验环境1、WindowsP操作系统。2、SQL2005 数据库。3、VS2008 编程环境三、实验内容在数据库中建立存储过程,在程序中使用参数化方法调用存储过程。四、实验步骤1、在数据库中建立存储过程,并使用SQL Client测试2、编辑
19、程序,使用ADO。NET测试带参数的存储过程。五、实验中的注意事项带参数的存储过程比较复杂,需要仔细变形程序六、实验代码Create or replace procedure(classid number,classname varchar2) AsBeginInsert into classes values(classid, classname); End; public static void myprocedure() string connectionstring = server=localhost;database=student;integrated security=SSPI
20、; /string connectionstring = server=localhost;database=student;uid=sa;pwd=123; SqlConnection con = new SqlConnection(connectionstring); con.Open(); SqlCommand com = con.CreateCommand(); com.CommandType=CommandType.StoredProcedure; com.CommandText = AddClass; com.Parameters.Add(classid,SqlDbType.Int)
21、; com.Parameters.Add(classname,SqlDbType.VarChar,10); com.Parameters0.Value = 3; com.Parameters1.Value = ss; com.ExecuteNonQuery(); 七、实验心得 通过这次实验,我学会了如何在。Net环境开发中调用数据库中的存储过程。 使用数据库中的存储过程而不使用存储在客户计算机本地的sql语句,可以不需要每次都编译,执行速度快的特点,除此之外可以减少网络流量。执行数据库存储过程和执行一般的sql语句有些不同,我们需要设置它的类型com.CommandType=CommandTy
22、pe.StoredProcedure;实验按要求完成。实验五 事务处理操作一、 实验目的与要求通过上机实验,完成对事务处理的操作。二、 实验环境1) WindowsP操作系统。2) SQL2005 数据库。3) VS2008 编程环境三、实验内容1. 在数据库中建立事务处理过程。四、实验步骤1 在数据库中建立表,并建立主键2 编辑程序,使用ADO.NET分别测试有重复主键的插入和没有重复主键的插入。五、实验中的注意事项1)观察事务是否有原子性六、实验代码public static void myinsert() string connectionstring = server=localhos
23、t;database=student;integrated security=SSPI; / string connectionstring = server=localhost;database=student;uid=sa;pwd=123; SqlConnection con = new SqlConnection(connectionstring); SqlTransaction mytrans=null ; try con.Open(); SqlCommand com = con.CreateCommand(); mytrans = con.BeginTransaction(); co
24、m.Transaction = mytrans; com.CommandText = insert into classes(classid,classname) values(14,dd); com.ExecuteNonQuery(); com.CommandText = update classes set classname=nn where classid=11;/第1次插入时classname=cc, com.ExecuteNonQuery(); mytrans.Commit(); catch (Exception ex) Console.WriteLine(Ex: 0, ex.Me
25、ssage); Console.WriteLine(更新未成功); mytrans.Rollback(); Main函数: static void Main(string args) /select.myselect(); Console.WriteLine(更新前); select.myselect(); insert.myinsert(); Console.WriteLine(更新后); select.myselect(); Console.Read(); /update.myupdate(); 七、实验总结实验中我们把一个插入语句和一个更新语句都写在了事物中,第1次插入14 dd这条数据
26、,并且更改11 name为cc,都成功了接着我们再插入一次14 dd,更改11 name为nn,如图所示,插入失败,update 修改的数据也回滚了。 通过这次实验我知道了如何在.net环境中使用事物来控制数据的修改,让数据保持一致性我们先从连接中获得事物 mytrans = con.BeginTransaction();然后在事物要开始的地方和我们的数据库命令语句绑定com.Transaction = mytrans;在事物的结束处 mytrans.Commit(); 在异常捕获中加上mytrans.Rollback();这样我们就可以,让一个事物启用了。实验按要求完成。 实验六 建立连接池
27、一、 实验目的与要求通过上机实验,完成一个小型连接池操作。二、 实验环境1) WindowsP操作系统。2) SQL2005 数据库。3) VS2008 编程环境三、实验内容1. 在数据库中建立一个小型连接池。四、实验步骤1 建立一个小型连接池2 使用建立的连接池获取数据库连接,进行操作。五、实验中的注意事项1)连接池的建立和获取六、实验代码Class DbConn /usingSystem.Data; /usingSystem.Data.SqlClient; Private const int MaxPool=10;/最大连接数 Private const int MinPool=5;/最小
28、连接数 Private const bool Asyn_Process=true;/设置异步访问数据库 Private const bool Mars=true;/在单个连接上得到和管理多个、仅向前引用和只读的结果集Private const int Conn_Timeout=15;/设置连接等待时间 Private const int Conn_Lifetime=15;/设置连接的生命周期 Private string ConnString=;/连接字符串 Private Sql ConnectionSqlDrConn=null;/连接对象 Public DbConn()/构造函数 Conn
29、String=server=localhost;+integratedsecurity=sspi;+database= student;+MaxPoolSize=+MaxPool+;+MinPoolSize=+MinPool+;+ConnectTimeout=+Conn_Timeout+;+ConnectionLifetime=+Conn_Lifetime+;+AsynchronousProcessing=+Asyn_Process+; SqlDrConn=newSqlConnection(ConnString); Public DataTable GetDataReader(stringSt
30、rSql)/测试 :数据查询 /当连接处于打开状态时关闭,然后再打开,避免有时候数据不能及时更新 if(SqlDrConn.State=ConnectionState.Open) SqlDrConn.Close(); try SqlDrConn.Open(); SqlCommand SqlCmd=newSqlCommand(StrSql,SqlDrConn); SqlDataReader SqlDr=SqlCmd.ExecuteReader(); if(SqlDr.HasRows) DataTable dt=newDataTable(); /读取SqlDataReader里的内容 dt.Loa
31、d(SqlDr); /关闭对象和连接 SqlDr.Close(); SqlDrConn.Close(); Return dt; Return null; catch(Exceptionex) System.Windows.Forms.MessageBox.Show(ex.Message); Return null; finally SqlDrConn.Close(); /连接池会判断该连接是否在最小连接数之内,如果“是”会将连接回收到活动连接池中而不是真正关闭连接,否则将烧毁连接。 七、实验总结通过本次实验了解到C#数据库连接池可以减少创建连接的次数。定义最小连接数(固定连接数),当用户在连接上调用Open,连接池就会检查池中是否有可用的连接。如果发现有连接可用,会将该连接返回给调用者,而不是创建新连接。应用程序在该连接上调用Close时,连接池会判断该连接是否在最小连接数之内,如果“是”会将连接回收到活动连接池中而不是真正关闭连接,否则将烧毁连接。连接返回到池中之后,即可在下一个Open调用中重复使用。专心-专注-专业