nullnullADO.NET连接数据库西源软件
培训
焊锡培训资料ppt免费下载焊接培训教程 ppt 下载特设培训下载班长管理培训下载培训时间表下载
中心回顾回顾.NET framework 中的 ADO.NET 是一组允许应用程序与数据库交互,以便检索和更新信息的类
DataSet 和 .NET 数据提供程序是 ADO.NET 的两个主要组件
每种 .NET 数据提供程序都是由以下四个对象组成:
Connection
Command
DataAdapter
DataReader
Connection 对象用于建立应用程序与数据库之间的连接
Command 对象允许向数据库传递请求,检索和操纵数据库中的数据
事务处理是一组数据操作,这些操作要么必须全部成功,要么必须全部失败,以保证数据的一致性和完整性问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
问题ADO.NET的两个主要组成部分是?
ADO.NET中数据提供程序包含哪几个对象?
Command返回值有哪几种?
对数据库的操作一般分成哪几个步骤?
事务处理一般分成哪几步骤?举例说明在什么情况下采用事务处理?目标目标理解并使用数据集对象
理解 DataAdapter 对象
理解 DataReader对象DataSetDataSetDataSet是存储从数据库检索到的数据的对象是零个或多个
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
对象的集合,这些表对象由数据行和列、约束和有关表中数据关系的信息组成不直接与数据库交互既可容纳数据库的数据,也可以容纳非数据库的数据源DataSet 类的层次结构DataSetDataColumnDataRowDataTableDataSetDataSetDataSet 层次结构中的类数据集的工作原理数据集的工作原理客户端服务器数据集将数据发送到数据集客户端修改数据集将数据集传递给客户端将修改后的数据集传递给服务器客户端向服务器请求数据 数据集的类型 数据集的类型数据集的类型类型化数据集非类型化数据集它是一个生成类,继承了基类 DataSet 的所有方法、事件和属性表和列只能以集合的形式公开,而不能用于借助 XML 结构文件派生新类使用类型化数据集访问列string employeeName;
employeeName = dsEmployees.Emp[0].EmpName;从 dsEmployees 数据集的 Emp 表中第一个
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
返回 EmpName 列,然后将其存储在 employeeName 字符串变量中使用非类型化数据集访问列 string employeeName;
employeeName =
dsEmployees.Tables["Emp"].Rows[0]["EmpName"];使用 Tables 集合返回 EmpName 列使用 C# 代码创建数据集使用 C# 代码创建数据集数据集实例是由 DataSet 构造函数创建的
数据集的名称是可选的,不需要指定
如果没有指定名称,则以默认名称 NewDataSet 创建数据集DataSet empDS = new DataSet("EmployeeDetails");DataTable、DataColumn和DataRowDataTable、DataColumn和DataRow数据集中的数据以 DataTable 对象的形式存储
DataTable 类属于 System.Data 命名空间DataTable objStudentTable = new DataTable("Students");创建 DataTable 对象的实例DataSet studentDS = new DataSet();
DataTable objStudentTable = studentDS.Tables.Add("Students");创建 DataTable 的实例,然后将其添加到数据集的 Tables 集合中DataTable、DataColumn和DataRowDataTable、DataColumn和DataRowDataColumn 对象定义 DataTable 的列
DataTable 的 Columns 属性含有对 DataColumn 对象的引用DataTable objStudentTable = new DataTable("Students");
DataColumn objStudentNumber = objStudentTable.Columns.Add
(" StudentNo ",typeof(Int32));
objStudentNumber.AllowDBNull = false;
objStudentNumber.DefaultValue = 25;
objStudentTable.Columns.Add("StudentName",typeof(Int32));
objStudentTable.Columns.Add("StudentMarks",typeof(Double));使用多个 DataColumn 对象创建 DataTableDataTable、DataColumn和DataRowDataTable、DataColumn和DataRowDataRow 对象表示 DataTable 中的实际数据//定义表结构,为Students表添加学号、姓名、分数三列
DataTable objStudentTable = new DataTable("Students");
DataColumn objStudentNumber = new DataColumn();
objStudentNumber.DataType = objStudentTable.Columns.Add
(" StudentNo ",typeof(string));
objStudentNumber.AllowDBNull = false;
objStudentNumber.DefaultValue = 25;
objStudentTable.Columns.Add("StudentName",typeof(string));
objStudentTable.Columns.Add("StudentMarks",typeof(Double));
//向表中填充数据
DataRow objStudentRow;
objStudentRow= objStudentTable.NewRow();
objStudentRow["StudentNo"]=101;
objStudentRow[“StudentName”]=“张三";
objStudentRow["StudentMarks"]=55;
objStudentTable.Rows.Add(objStudentRow);在 DataTable 对象中新建 DataRow定义主键定义主键表中的主键用于对记录进行唯一标识
DataTable 的 PrimaryKey 属性接受含有一个或多个 DataColumn 对象的数组objStudentTable.PrimaryKey = new
DataColumn[]{objStudentTable.Columns["StudentNo"]}; 设置单个列为 DataTable 的主键objStudentTable.PrimaryKey = new DataColumn[]
{
objStudentTable.Columns["StudentNo"],
objStudentTable.Columns["StudentName"]
}; 为 DataTable 对象设置复合主键DataTable 的约束DataTable 的约束Constraint是对表中数据施加的限制或规则集决定表中可以存储的数据用于维护数据的正确性和有效性约束的类型ForeignKeyConstraint UniqueConstraint DataViewDataViewDataView用作 DataTable 中存储的数据的表示层提供对 DataTable 进行排序、筛选和搜索的自定义视图允许 WinForms 控件进行数据绑定可用于查看 DataTable 中存储的数据的子集数据绑定是为了在控件上显示数据库表中存储的数据,而将应用程序的控件与数据表的行进行绑定的过程DataView objStudentView = new DataView(objStudentTable);
objStudentView.RowFilter = "StudentMarks > 60";
for(int ctr =0; ctr < objStudentView.Count; ctr++)
{
MessageBox.Show(objStudentView[ctr]["StudentNo"].ToString());
}创建 DataView 并对该视图应用某种筛选器
知识点
高中化学知识点免费下载体育概论知识点下载名人传知识点免费下载线性代数知识点汇总下载高中化学知识点免费下载
小结知识点小结使用DataSet的优点及使用场合
DataSet的层次结构
操纵DataSet中指定行中特定列的值
在程序中向DataSet中动态添加表、字段、值、约束
利用DataView筛选数据DataAdapter 对象DataAdapter 对象数据源填充脱机数据库非永久连接DataAdapter 对象DataAdapter 对象.NET 提供程序及其 DataAdapter 类DataAdapter 类的属性和方法OLEDBDataAdapterOLEDBDataAdapter用于访问任何由 OleDb 提供程序公开的数据源
用作数据集和数据源之间的桥梁,以便检索和存储数据
与 OleDbConnection 和 OleDbCommand 一起使用以提高性能DataAdapter 类的属性和方法OleDbConnection objOleConnection = new OleDbConnection();
objOleConnection.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source = "+
"D:\\Students.mdb";
objOleConnection.Open();
string query ="SELECT * from Student";
DataSet objDataSet = new DataSet();
OleDbDataAdapter objOleAdapter = new OleDbDataAdapter();
objOleAdapter.SelectCommand = new
OleDbCommand(query,objOleConnection);
objOleAdapter.Fill(objDataSet,"Students");传递给 OleDbAdapter 对象将数据填充到数据集中SQLDataAdapterSQLDataAdapter它设计为使用 Microsoft SQL Server 7 或更高版本提供最佳通信
该适配器在数据集和 Microsoft SQL Server 之间起桥梁作用,提供用于保存和检索数据的接口
与 SqlConnection 和 SqlCommand 相互配合使用SqlConnection objSqlConnection = new SqlConnection
("SERVER=MYSERVER;database=Students;uid=sa;
password=playware");
SqlDataAdapter objSqlAdapter = new SqlDataAdapter("SELECT *
from Student",objSqlConnection);
objSqlConnection.Open();
DataSet objDataSet = new DataSet();
objSqlAdapter.Fill(objDataSet,"Students");创建与 SQL Server 数据库的连接,
并用相应的值填充数据集知识点小结知识点小结DataAdapter的作用
DataAdapter的组成
DataAdapter的属性、方法
使用DataAdapter对数据的选择、添加、删除和修改DataReaderDataReaderDataReader只读
只进记录集数据源查询只读和只进访问 需要永久连接.NET 数据提供程序及其 DataReader 类DataReaderDataReaderDataReader 对象的属性和方法SqlConnection objSqlConnection = new SqlConnection("SERVER=MYSERVER;database=Students;
uid=sa;password=playware");
string query = "SELECT * from Student";
SqlCommand objSqlCommand = new
SqlCommand(query,objSqlConnection);
objSqlConnection.Open();
SqlDataReader objSqlReader = objSqlCommand.ExecuteReader();
while(objSqlReader.Read())
{
MessageBox.Show(“学号: "+objSqlReader.GetValue(0));
}执行给定查询、从数据流中检索行,并将结果集绑定到 DataReader 类的给定实例中 用于查询和检索数据的示例用于查询和检索数据的示例演示: 创建 Windows 应用程序示例的步骤“乘客详细信息”窗体 创建一个名为“Example 1”的 Windows 应用程序
将 Form1.cs 更改为 frmPassenger.cs
设计窗体,如图 2.3 所示
命名控件
将以下命名空间包含在项目中
在类声明部分声明以下变量using System.Data;
using System.Data.SqlClient;private SqlConnection objSqlConnection;
private SqlDataAdapter objDataAdapter; 用于查询和检索数据的示例用于查询和检索数据的示例将以下代码添加到 frmPassenger 的 Load 事件中。
在 btnAdd 按钮的 Click 事件中添加以下代码。private void frmPassenger_Load(object sender, System.EventArgs e)
{
this.cboSex.Items.Add(“男");
this.cboSex.Items.Add(“女");
objSqlConnection = new
SqlConnection("server=MYSERVER;database=Flights;
uid=sa; pwd = playware;");
}向组合框中添加值创建 Sql 连接private void btnAdd_Click(object sender, System.EventArgs e)
{
try
{
objSqlConnection.Open();
DataSet objDataSet = new DataSet();
objDataAdapter = new SqlDataAdapter("Select * from
Passenger",objSqlConnection);
objDataAdapter.Fill(objDataSet,"Passenger");
objDataAdapter.InsertCommand =
objSqlConnection.CreateCommand();打开 Sql 连接新建数据集填充数据集objDataAdapter.InsertCommand.CommandText =
"INSERT INTO Passenger(FlightCode,PassportNo”+
”,Name,SeatNo, Sex,Age) " +
"VALUES('"+this.txtFlightCode.Text+"','“
+this.txtPassport.Text+"',’" +this.txtName.Text+"',“
+this.txtSeatNo.Text+",'“
+this.cboSex.SelectedItem.ToString()+"',“
+this.txtAge.Text+")";
DataTable objDataTable = new DataTable();
objDataSet.Tables.Add(objDataTable);
DataRow objDataRow = objDataSet.Tables[0].NewRow();
创建显式、可重用的 INSERT 命令objDataRow["FlightCode"]=this.txtFlightCode.Text;
objDataRow["PassportNo"]=this.txtPassport.Text;
objDataRow["Name"]=this.txtName.Text;
objDataRow["SeatNo"]=Convert.ToInt32(this.txtSeatNo.Text);
objDataRow["Sex"]=this.cboSex.SelectedText;
objDataRow["Age"]=Convert.ToInt32(this.txtAge.Text);
objDataSet.Tables[0].Rows.Add(objDataRow);
//
objDataAdapter.Update(objDataSet,"Passenger");
Application.DoEvents();
MessageBox.Show(“已插入行");
this.ClearFields();
}
catch(SqlException ex)
. . .
}用于查询和检索数据的示例用于查询和检索数据的示例在 btnDelete 按钮的 Click 事件中添加下列代码。private void btnDelete_Click(object sender, System.EventArgs e)
{
try
{
objSqlConnection.Open();
DataSet objDataSet = new DataSet();
objDataAdapter = new SqlDataAdapter("Select * from
Passenger",objSqlConnection);
objDataAdapter.Fill(objDataSet,"Passenger");
objDataAdapter.DeleteCommand =
objSqlConnection.CreateCommand();
objDataAdapter.DeleteCommand.CommandText =
"DELETE from Passenger where FlightCode='"+
this.txtFlightCode.Text+"'";
DataTable objDataTable = new DataTable();
objDataSet.Tables.Add(objDataTable);打开连接创建显式、可重用的 DELETE 命令。 foreach(DataRow dr in objDataSet.Tables[0].Rows)
{
if(dr["FlightCode"].Equals(this.txtFlightCode.Text))
{
DataRow objDataRow = dr;
this.txtFlightCode.Text = objDataRow["FlightCode"].ToString();
this.txtPassport.Text = objDataRow["PassportNo"].ToString();
this.txtName.Text = objDataRow["Name"].ToString();
this.txtSeatNo.Text = objDataRow["SeatNo"].ToString();
this.cboSex.SelectedText = objDataRow["Sex"].ToString();
this.txtAge.Text = objDataRow["Age"].ToString();
objDataRow.Delete();
删除数据集中的记录objDataAdapter.Update(objDataSet,"Passenger");
objDataSet.AcceptChanges();
MessageBox.Show(“已删除记录");
ClearFields();
break;
}
else
{
MessageBox.Show(“未找到记录");
break;
}
}
}
catch(SqlException ex)
. . .
}如果未找到记录,则显示一条错误消息用于查询和检索数据的示例用于查询和检索数据的示例在项目中添加 ClearFields() 方法
在 btnCancel 按钮的 Click 事件中添加代码private void ClearFields()
{
this.txtName.Text="";
this.txtFlightCode.Text="";
this.txtAge.Text="";
this.txtPassport.Text="";
this.txtSeatNo.Text="";
this.cboSex.Text="";
}private void btnCancel_Click(object sender, System.EventArgs e)
{
this.Close();
}总结总结在 DataSet 对象内表示的数据是数据库的部分或全部的断开式内存副本
DataAdapter 对象用来填充数据集和用更新集到数据库,这样方便了数据库和数据集之间的交互
类型化数据集对象是 DataSet 类的派生类的实例,这些类都基于 XML 结构
DataTable 表示一个内存数据表,而 DataColumn 表示 DataTable 中列的结构
DataView 是 DataTable 中存储的数据的表示层
DataReader 对象提供只进、只读和连接式数据访问,并要求使用专用的数据连接
DataReader 对象提供检索强类型化数据的方法