Python语言技术文档

微信小程序技术文档

php语言技术文档

jsp语言技术文档

asp语言技术文档

C#/.NET语言技术文档

html5/css技术文档

javascript

点击排行

您现在的位置:首页 > 技术文档 > C#/.NET入门教程

ADO.NET无连接模式的详细介绍

来源:中文源码网    浏览:152 次    日期:2024-05-03 04:41:57
【下载文档:  ADO.NET无连接模式的详细介绍.txt 】


ADO.NET无连接模式的详细介绍
无连接模式:可以在没有打开连接时在内存中操作数据,DataAdapter通过管理连接为无连接模式提供服务,当要从数据库中查询数据时,DataAdapter打开一个连接,填充指定的DataSet,等数据读取完马上自动关闭连接,然后可以对数据做修改,再次使用DataAdapter打开连接,持久化修改(无论是更新,删除或是更新),最后自动关闭连接,使用无连接模式的情况是有一些独立数据,它们不会发生改变或者很少改变,因为在将填充DataSet和更新数据这段时间内数据库中的实际数据也许会发生改变,如果需要将数据立即持久化到数据库请使用连接模式
读取数据到DataSet:无连接意味着一个连接建立了一个与数据库的会话,请求的数据读入到DataSet中,然后通过断开数据库的连接关闭会话,这时会话因为与数据库的断开而关闭,DataSet成为一个无连接的数据库
复制代码 代码如下:/// /// 查询学生信息 /// /// 返回填充了学生表的DataSet public DataSet GetUserInfor() { string str = "Data Source=.;Initial Catalog=Student;Integrated Security=True"; var conn = new SqlConnection(str); DataSet ds = new DataSet(); var sda = new SqlDataAdapter("SELECT * FROM Student",conn); sda.Fill(ds, "student");//调用fill方法时,SqlDataAdapter会自动打开连接,读取数据然后关闭连接 foreach (DataRow dr in ds.Tables["student"].Rows) { Console.WriteLine(dr["name"]); } return ds; }
将DataSet的修改保存到数据库插入数据
复制代码 代码如下:/// /// 插入学生信息,并返回插入后的DataSet /// /// 学生实体类 public DataSet InsertStudnt(Student stu) { DataSet ds = GetUserInfor(); string str = "Data Source=.;Initial Catalog=Student;Integrated Security=True"; string sql = "INSERT INTO student VALUES (@name,@age)"; var conn = new SqlConnection(str); var cmd = new SqlCommand(sql,conn); var sda = new SqlDataAdapter(); SqlParameter sqlParam1 = new SqlParameter() { ParameterName = "@name", SourceColumn = "name" }; SqlParameter sqlParam2 = new SqlParameter() { ParameterName = "@age", SourceColumn = "age" }; SqlParameter[] sqlParamArray = new SqlParameter[] {sqlParam1,sqlParam2 }; cmd.Parameters.AddRange(sqlParamArray); sda.InsertCommand = cmd; DataRow dr = ds.Tables["student"].NewRow(); dr["name"] = stu.name; dr["age"] = stu.age; ds.Tables["student"].Rows.Add(dr); sda.Update(ds,"student"); return ds; }
更新数据
复制代码 代码如下:/// /// 根据ID更新姓名和年龄 /// /// 姓名 /// 年龄 /// 学生ID /// 返回更新后的DataSet public DataSet UpdateStudent(Student stu,int id) { DataSet ds = GetUserInfor(); string str = "Data Source=.;Initial Catalog=Student;Integrated Security=True"; string sql = "UPDATE student SET name=@name,age=@age WHERE id=@id"; var conn = new SqlConnection(str); var cmd = new SqlCommand(sql, conn); var sda = new SqlDataAdapter(); SqlParameter param1 = new SqlParameter() { ParameterName="@name",SourceColumn="name" }; SqlParameter param2 = new SqlParameter() { ParameterName = "@age", SourceColumn = "age", SqlDbType=SqlDbType.Int }; SqlParameter param3 = new SqlParameter() { ParameterName = "@id", SourceColumn = "id" }; SqlParameter[] param = new SqlParameter[] {param1,param2,param3 }; cmd.Parameters.AddRange(param); sda.UpdateCommand = cmd; DataTable dt = ds.Tables["student"]; foreach (DataRow dr in dt.Rows) { int oldID=Convert.ToInt32(dr["id"]); if (oldID == id) { dr["name"] = stu.name; dr["age"] = stu.age; } } sda.Update(ds,"student"); return ds; }
删除数据
复制代码 代码如下:/// /// 根据ID删除一个学生 /// /// 返回更新后的DataSet public DataSet DeleteStudent(int id) { DataSet ds = GetUserInfor(); string str = "Data Source=.;Initial Catalog=Student;Integrated Security=True"; string sql = "DELETE FROM student WHERE id=@id"; var conn = new SqlConnection(str); var cmd = new SqlCommand(sql, conn); var sda = new SqlDataAdapter(); SqlParameter param = new SqlParameter() { ParameterName="@id",SourceColumn="id",SqlDbType=SqlDbType.Int }; cmd.Parameters.Add(param); sda.DeleteCommand = cmd; DataTable dt=ds.Tables["student"]; foreach (DataRow dr in dt.Rows) { int oldId = Convert.ToInt32(dr["id"]); if (oldId == id) dr.Delete(); } sda.Update(ds,"student"); return ds; }

相关内容