数据库操作类

转载 2006年06月24日 17:46:00

1,Command对象
  更新需要的属性:
   Connection    包含数据仓库连接的细节
   CommandText   要运行的命令
   CommandType   命令的类型 Sql字符或存储过程的名称
          Text   表示文本字符串sql
          TableDirect 表示表名
          StoredProcedure 表示存储过程的名称
   Parameters    Parameters对象的一个集合

 2,DataAdapter对象
   注意DataAdapter和Command的区别?
   >> Command主要用于运行命令
   >> DataAdapter主要用于为多个命令提供一个存储空间,在数据仓库和DataSet之间提供    双向交互。
  哦,一个Command对象只能处理查询,添加,删除,修改中的一种
  因此 DataAdapter用四个属性存储四种Command对象
  属性如下 SelectCommand,UpdateCommand,InsertCommand,DeleteCommand 

 3,CommandBuilder对象
  OleDbCommandBuilder objBuilder
  objBuilder = new OleDbCommandBuilder(DataAdapter)
  表示告诉命令生成器可以在哪儿取到SelectCommand,以建立其他的命令.
 
  DataAdapter.UpdateCommand = objBuilder.GetUpdateCommand();
  DataAdapter.InsertCommand = objBuilder.GetInsertCommand();
  DataAdapter.DeleteCommand = objBuilder.GetDeleteCommand();
 
  注意在这种情况下,SelectCommand必需带有一个主键字段

 4.DataAdapter.Update()
 
  DataAdapter.Update(DataSet,"Tablesname");
 
 例如,以下代码确保首先处理表中已删除的行,然后处理已更新的行,然后处理已插入的行。
 [C#]
 DataTable updTable = custDS.Tables["Customers"];

 // First process deletes.
 custDA.Update(updTable.Select(null, null, DataViewRowState.Deleted));

 // Next process updates.
 custDA.Update(updTable.Select(null, null, DataViewRowState.ModifiedCurrent));

 // Finally, process inserts.
 custDA.Update(updTable.Select(null, null, DataViewRowState.Added));
 
 其中DataViewRowState数据视图的操作属性 包括Deleted, ModifiedCurrent,Added,Unchanged等
 
 至此,更新数据仓库工作完成。
 
 使用存储过程
 
 存储过程类似于代码中的函数,它存储在数据服务器上并有一个名称。
 为什么要使用存储过程?
  1.庞大复杂的SQL语句影响程序代码的阅读
  2.由数据库服务器来处理的存储过程比直接使用SQL语句更快,效率更高
 
  要使用存储过程,需要注意的是CommandType设为StoredProccess CommandText为存储过程的名称
 
  eg: objCmd.CommandText = "[Sales by Category]";
      objCmd.CommandType = CommandType.StoreProcedure;
 
 
使用XML
 由于ADO.net设计时就考虑到了XML,它处理XML数据就像是这些数据来自于一个数据库

 1,写入XML文件
  objAdapter.Fill(objDataSet,"Employees"); //填充结果集
  objDataSet.WriteXml(Server.MapPath("Employees.xml"));//写入到xml文件
 注意两点:
  1,首先用到了DataSet的WriteXml()方法,从DataSet中提取信息并格式化xml
  2,Server.MapPath()表示生成文件路径,指向当前应用程序的目录
 2,读取XML文件
  objDataSet.ReadXml(Server.MapPath("Employees.xml"));
 
 3,将Xml转换为字符串
  string strXML,strSchema
  strXML = objDataSet.GetXml()
  strSchema = objDataSet.GetXmlSchema()
 4,一旦XML读入到DataSet中他就同从数据库中读入的数据没有任何区别,也可以进行前面任何的
 操作,最终只要将操作的结果集DataSet写入至XML或者数据库都可以
ADO.net的主要对象元素:
 
 数据源:通常指的是一个关系数据库,如SQLserver等
 托管的数据供应程序:提供数据仓库通信的功能 如ODBC等
 Connection对象:建立一个页面程序与数据库驱动的通信管道
 Command对象:一个包含读写数据指令的工具
 DataReader/DataSet对象:存储已读出或写入数据的地方
 .Net控件:主要指<asp:datagrid>
 Connection对象:主要用于连接数据源
 通过Open()方法打开连接字符串中的连接
 连接字符串包含3各部分的信息:
 >> 第一部分指定要使用的供应程序或驱动程序的种类 //server=localhost
 >> 第二部分指定要使用的数据库     //database=Mydatabase
 >> 第三部分通常包含安全信息,包括用户名,密码等 //uid=foolboy;pwd=Mypasswd
 
 Command对象和DataReader:读取和修改数据
 Command用法:
 objCommand = new OleDbCommand(strSQL,objConnection);
 objDbDataReader = objCommand.ExecuteReader();
 DataReader:存储数据
 读取方法 DataReader["FIELD"]
 
 数据绑定:
 是在数据源和数据使用者创建一个连接的过程。
  主要是指绑定到DataGrid上
 DataReader的局限:
 >> 只能读取数据,不能修改数据
 >> 只能向前循环数据
 >> 只能处理一个表的数据
 DataSet是他的替代品还是DataTable??他们的主要区别?
 
 
 DataSet和DataTable对象
 DataSet表示数据库中的数据,与DataReader不同它可以存储几个表和他们之间的关系。
 在使用表示主要要用到下面4各对象:
 >> DataTable: 表示表本身
 >> DataSet: 核心对象,建立多表之间的adhoc关系,可以一表中的一行和另一表的一行关联起来
 >> DataAdapter: 用于结果从Connection传给Dataset。Fill()方法把数据拷贝到DataSet中, Update()方法把DataSet中的数据烤回数据源。
 >> DataView: 表示DataSet中存储的DataTables的特定视图
 >> DataGrid: 等的DataSource最终只绑定到某具体DataView上
 
 ADO.net关于SQL Server的对象
 sqlConnection
 sqlCommand
 sqlDataAdapter

 数据异常处理

 常见问题:
 >> 代码包含对不存在的ADO.NET对象的引用
 >> 代码请求的数据为NULL不存在
 >> 代码的连接字符串错误
 >> 包含不存在的列或表的引用
 >> 没有提供正确的UserID和Password
 >> 代码是用语法不正确的SQl语句
 >> 网络问题导致数据库连接问题
 
        处理方法:
  利用 try ....catch  捕获错误信息

 更新数据方法

 问题:
  >> 如何更新?我们的修改都是基于断开连接的,如果将修改后的结果写入数据库中?
  >> 如何处理同步更新?两个人先后对更新了同一数据,怎么办?结果会被覆盖么?

 DataSet & DataTable & DataRow关系如下所示:
        --------------------------------------
 |            DataSet                 |
 |      |-------------------------|   |
 |      |     DataTable           |   |
 |      |                         |   |
   |      |      |----------------| |   |
 |      |      |    DataRow     | |   |
 |      |      |----------------| |   |
 |      |      |    DataRow     | |   |
 |      |      |----------------| |   |
        |      |-------------------------|   |
 |------------------------------------|
                          
 DataTable = DataSet.Tables["TName"];
 DataRow = DataTable.Rows;
 string strFirstName = DataRow[0]["FirstName"];

 这里的更新的实质都是对数据集DataSet的更新方法,没有涉及到对数据源的更新
 更新操作思路:
 1.添加记录 (添加行)
  添加记录首先需要声明两个变量 DataTable ,DataRow
  其中DataTable需要实例化到具体的数据集中的某个table
  DataRow = DataTable.NewRow()  声明为Table的新Row
  再对DataRow进行赋值,调用DataTable.Rows.Add(DataRow)即可
 2.修改纪录 (编辑行)
  首先声明一个变量 DataRow[] objRows用来存储要编辑的行
  objRows = DataTable.Select("查询条件");
  如果是一行,可以这样 objRows = DataTable.Rows[3];
  再对其进行修改 如 objRows[0][FIELD1]=""  objRows[0][FIELD2]=""
 3.删除纪录
  如下 DataTable.Rows[5].Delete();
  推想:应该可以这样,首先申明一个变量 DataRow[] objRows 用来存储要删除的行
  objRows = DataTable.Select("查询条件");

php mysql数据库操作类,功能很强大

  • dongsg11200
  • dongsg11200
  • 2014年03月25日 13:23
  • 2962

MySQL数据库操作类(PHP实现,支持连贯操作)

使用过ThinkPHP框架的同学可能会对于其中数据库模型操作特别有好感,ThinkPHP提供了数据库操作的简单的操作,对于连接数据库,数据库的增删改查等数据操作都非常的nice,同时支持连贯操作,对于...
  • helencoder
  • helencoder
  • 2016年04月17日 11:27
  • 12992

C#数据库操作类(完整通用)

using System; using System.Collections.Generic; using System.Text; using System.Data.SqlClient; ...
  • angela8804100029
  • angela8804100029
  • 2013年04月14日 19:09
  • 1855

C#.NET操作数据库通用类

下面给出了一个C#操作MS SQL Server 数据库的通用类,通过该类可以对数据库进行任何操作,包括执行SQL语句、执行存储过程。以下是其详细实现过程,希望大家共同修改优化之。稍后将介绍如何使用它...
  • ecjtuync
  • ecjtuync
  • 2007年04月25日 16:47
  • 1469

pdo数据库操作类

pdo,有不局限数据库,和防止sql注入等很多优点,也是php官方推荐的方式,所以花点时间写个pdo数据库操作类!...
  • gongstrong123
  • gongstrong123
  • 2016年03月08日 21:58
  • 1094

C#---数据库访问通用类、Access数据库操作类、mysql类

//C# 数据库访问通用类 (ADO.NET) using System; using System.Collections.Generic; using System.Text; using Sys...
  • cjh200102
  • cjh200102
  • 2011年09月27日 09:10
  • 3562

我写的数据库操作类DBUtil

package org.evilbinary.db; import java.sql.*; import java.util.Vector; public class DBUtil { ...
  • EvilBinary_root
  • EvilBinary_root
  • 2011年04月04日 13:20
  • 1803

PHP 好用的数据库操作类

开始学习PHP之后。一直再使用的PHP mysql数据库操作类。
  • jsj2009145520
  • jsj2009145520
  • 2015年04月10日 11:15
  • 820

Android打造属于自己的数据库操作类。

1、概述开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建、管理数据库。但是当我们需要去...
  • yissan
  • yissan
  • 2016年05月25日 00:00
  • 9089

C#SQLServer数据库操作类

using System; using System.Collections.Generic; using System.Text; using System.Configuration; using...
  • zuoyefeng1990
  • zuoyefeng1990
  • 2017年03月15日 14:12
  • 271
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库操作类
举报原因:
原因补充:

(最多只允许输入30个字)