数据库操作类

合集下载

第3章 数据库的基本操作(1)

第3章 数据库的基本操作(1)

■若在文件名前指定了驱动器标识符,则文件建立在指定的 驱动器上,否则建立在当前驱动器上。 ■不指定文件扩展名时,缺省扩展名为.DBF。 ■若磁盘上存在这个文件或文件重名,系统显示一个警告对 话框,提示是否要改写表。如果需要改写,则选择【是】, 否则选择【否】。 ■不要用A-J单个字母作为表文件名,因为它们是专门用于工 作区别名的。
记录的总字节数=各个字段的宽度+ 1
LIST STRU和DISP STRU命令的区别:
DISP STRU:在每显示一屏信息后暂停,等待用户按任 意一键后继续显示; LIST STRU:显示信息时没有周期性暂停,而是连续 向下显示,直到显示完毕。
二. 显示表中的记录
格式:LIST ︱ DISPLAY
• 逻辑型字段:只允许输入下列字母中的一个: y, Y, t, T, n, N, f, F
• 日期型字段:mm-dd-yy mm取值范围01~12 dd取值范围01~31
• 备注型字段的输入:
Ctrl+PgDn: 弹出字段编辑窗口
Ctrl+W: 保存该字段内容到备注文件中。 输入数据后,该字段栏显示为Memo
指针定位就是将记录指针移到指定的记录上,记录指针指向的记 录称为当前记录。VFP提供了绝对定位和相对定位两类命令。
(1)记录指针的绝对定位
格式: GOTO [RECORD <数值表达式> ]∣TOP∣BOTTOM 功能:将记录指针直接定位到指定的记录上。
钮,所改变的设置仅在本次系统运行期间有效,退出系统 后,所做的修改将丢失。
二. 建立表前的准备
在建立表结构以前,首先应该根据用户的需求,明确所要创建 的表中应该包含哪些字段,每个字段的名称、类型和宽度。

openstack数据库相关操作

openstack数据库相关操作

openstack数据库相关操作OpenStack数据库相关操作OpenStack是一个开源的云计算平台,可以提供虚拟机、网络和存储资源的管理和分配。

数据库是OpenStack平台中非常重要的一部分,它负责存储和管理OpenStack平台的各种配置信息、状态信息和用户数据。

本文将介绍OpenStack数据库相关操作的实际应用。

一、数据库类型OpenStack使用了多种数据库类型,包括MySQL、MariaDB、PostgreSQL和SQLite等。

其中,MySQL是最常用的数据库类型,它被广泛用于存储OpenStack平台的各种配置信息和状态信息。

而MariaDB是MySQL的分支版本,也可以作为OpenStack的数据库类型。

PostgreSQL是另一种常用的数据库类型,用于存储OpenStack平台的用户数据。

SQLite是一个轻量级的数据库类型,主要用于开发和测试环境。

二、数据库配置在安装OpenStack平台时,需要配置数据库的相关参数。

通常需要指定数据库的类型、地址、端口号、用户名和密码等信息。

这些配置信息将被用于连接和管理数据库。

在配置数据库时,需要确保数据库服务器已正确安装和配置,并且可以通过网络进行访问。

三、创建和管理数据库在安装和配置完数据库后,需要创建相应的数据库和用户。

创建数据库时,可以使用命令行工具或数据库管理工具,如MySQL的命令行工具或phpMyAdmin。

创建用户时,需要指定用户的权限和访问范围,以及与数据库的关联关系。

为了确保数据库的安全性和可靠性,建议为每个组件和服务分别创建独立的数据库和用户。

四、数据库备份和恢复数据库备份是保证OpenStack平台数据安全的重要手段。

通过定期备份数据库,可以在数据丢失或损坏时进行恢复。

常用的数据库备份方法有物理备份和逻辑备份两种。

物理备份是直接备份数据库文件,包括数据文件和日志文件。

逻辑备份是使用数据库的导出工具将数据库导出为可读的文本文件,以便在需要时进行恢复。

SQL数据库公共操作类

SQL数据库公共操作类

//C#程序设计一般连接SQL数据库的一般操作…此放在公共类中…调用即可;//简单方便using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.Sql;using System.Data.SqlClient;using System.Data;namespace DAL{public class SQLHelper//SQL操作类{/// <summary>/// 数据库连接字符段/// </summary>private string connstr = "";public string Connstr {get {return connstr;}set {connstr = value;}}/// <summary>/// 数据库是否连接成功/// </summary>public bool Checklink(){bool Rtn = false;using (SqlConnection conn = new SqlConnection(connstr)) {try{conn.Open();Rtn = true;conn.Close();}catchRtn = false;}}return Rtn;}/// <summary>/// 完成对数据库的相关操作/// </summary>/// <param name="cmdText">命令参数内容</param>/// <returns>返回DataTable类型数据</returns>public DataTable GetDataSet(string cmdText){using (SqlConnection conn = new SqlConnection(connstr)){try{conn.Open();}catch{return null;}SqlCommand cmd = new SqlCommand(cmdText, conn);//实例化此类//填充DataSet并更新数据库DataSet ds = new DataSet();SqlDataAdapter sda = new SqlDataAdapter(cmd);sda.Fill(ds);return ds.Tables[0];//返回DataTable类型数据//conn.Close();}}/// <summary>/// 完成对数据库的相关操作/// </summary>/// <param name="cmdText">命令参数内容</param>/// <returns>返回DataTable类型数据</returns>public DataTable GetDataSet(string cmdText, SqlParameter[] par){using (SqlConnection conn = new SqlConnection(connstr)){{conn.Open();}catch{return null;}SqlCommand cmd = new SqlCommand(cmdText, conn);//实例化此类//循环添加if (par != null){foreach (SqlParameter sp in par){cmd.Parameters.Add(sp);}}//填充DataSet并更新数据库DataSet ds = new DataSet();SqlDataAdapter sda = new SqlDataAdapter(cmd);sda.Fill(ds);return ds.Tables[0];//返回DataTable类型数据conn.Close();}}/// <summary>/// 执行SQL语句,返回影响的行数/// </summary>/// <param name="cmdText">命令参数内容</param>/// <returns>返回int类型值</returns>public int ExecNoneQuery(string cmdText){using (SqlConnection conn = new SqlConnection(connstr)){try{conn.Open();}catch{return -1;SqlCommand cmd = new SqlCommand(cmdText, conn);//实例化此类return cmd.ExecuteNonQuery();//返回int类型值//conn.Close();}}/// <summary>/// 执行SQL语句,返回影响的行数/// </summary>/// <param name="cmdText">命令参数内容</param>/// <returns>返回int类型值</returns>public int ExecNoneQuery(string cmdText,SqlParameter[] para){using (SqlConnection conn = new SqlConnection(connstr)){try{conn.Open();}catch{return -1;}SqlCommand cmd = new SqlCommand(cmdText, conn);//实例化此类if (para != null && para.Length > 0){foreach (SqlParameter par in para){cmd.Parameters.Add(par);}}return cmd.ExecuteNonQuery();//返回int类型值//conn.Close();}}/// <summary>/// 完成对数据库存储过程的操作(查询)/// </summary>/// <param name="cmdText">存储过程</param>/// <param name="par">所添加集合名</param>/// <returns>返回DataTable类型数据</returns>public DataTable ExecProcDataTable(string cmdText, SqlParameter[] par){using (SqlConnection conn = new SqlConnection(connstr)){try{conn.Open();}catch{return null;}SqlCommand cmd = new SqlCommand(cmdText, conn);//实例化此类mandType = CommandType.StoredProcedure;//指定命令参数内容的类型//循环添加if (par != null){foreach (SqlParameter sp in par){cmd.Parameters.Add(sp);}}//填充DataSet并更新数据库SqlDataAdapter sda = new SqlDataAdapter(cmd);DataSet ds = new DataSet();sda.Fill(ds);return ds.Tables[0];//返回DataTable类型数据//conn.Close();}}/// <summary>/// 完成对数据库存储过程的操作(更新,插入,删除)/// </summary>/// <param name="cmdText">存储过程</param>/// <param name="par">所添加集合名(含输出参数)</param>public int ExecProc(string cmdText, SqlParameter[] par){using (SqlConnection conn = new SqlConnection(connstr)){try{conn.Open();}catch{return -2;}SqlCommand cmd = new SqlCommand(cmdText, conn);//实例化此类mandType = CommandType.StoredProcedure;//指定命令参数内容的类型//循环添加if (par != null){foreach (SqlParameter sp in par){cmd.Parameters.Add(sp);}}return cmd.ExecuteNonQuery();//返回int类型值//conn.Close();}}/// <summary>/// 获取SQL适配器(用Select为主,并且含有主键的表)--方便表更新,插入,删除/// </summary>public SqlDataAdapter GetSqlAdapter(string TableName,out DataTable dtl,out SqlConnection con){using (con = new SqlConnection(connstr)){dtl = new DataTable();try{con.Open();}catch{return null;}SqlCommand cmd = new SqlCommand("SELECT * FROM "+TableName, con);//实例化此类mandType = CommandType.Text;//循环添加//if (par != null)//{// foreach (SqlParameter sp in par)// {// cmd.Parameters.Add(sp);// }//}//填充DataSet并更新数据库//DataSet ds = new DataSet();SqlDataAdapter sda = new SqlDataAdapter(cmd);sda.Fill(dtl);//return ds.Tables[0];//返回DataTable类型数据//con.Close();return sda;}}}}//调用方法:例如// DAL.SQLHelper SQLOperator=new DAL.SQLHelper();// SQLOperator.ExecNoneQuery(“INSERT INTO User(UserID,UserName,UserPass) Values(‘S001’,’小王’,’123’)”);。

数据库的DDL、DML、DQL、DCL名词详解

数据库的DDL、DML、DQL、DCL名词详解

数据库的DDL、DML、DQL、DCL名词详解展开全文简言之:1,DDL(DataDefinitionLanguage):数据定义语言,用来定义数据库对象:库、表、列等;2,DML (DataManipulationLanguage):数据操作语言,用来定义数据库记录(数据);3,DQL(DataQueryLanguage):数据查询语言,用来查询记录(数据);4,DCL(DataControlLanguage):数据控制语言,用来定义访问权限和安全级别。

举例说明1,DDL用来定义数据库对象:库、表、列等;适用范围:对数据库中的某些对象(例如,database,table)进行管理,如Create,Alter和Drop.注意:在生产环境中,DDL类操作需要慎用,因为不能做roolback操作,一旦执行无法回退。

2,DML对数据库中的数据进行一些简单操作,,如insert,delete,update,select(插入、删除、修改、检索)等都是DML.对select来说,它有两种划分方法,可以放在DML,也可以单独放在DQL3,DQL用来查询记录(数据);基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:SELECT <字段名表>FROM <表或视图名>WHERE <查询条件> 4,DCL用来定义访问权限和安全级别。

数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。

如:1.GRANT:授权。

2.ROLLBACK [WORK]TO[SAVEPOINT]:回退到某一点。

回滚—ROLLBACK回滚命令使数据库状态回到上次最后提交的状态。

其格式为:SQL>ROLLBACK;MIT [WORK]:提交。

在数据库的插入、删除和修改操作时,只有当事务在提交到数据库时才算完成。

在事务提交前,只有操作数据库的这个人才能有权看到所做的事情,别人只有在最后提交完成后才可以看到。

对数据库的常见操作

对数据库的常见操作

对数据库的常见操作数据库是一种信息存储介质,可以存储大量结构化的数据,通过SQL语句实现对数据库进行查询、维护和操作,以满足各类信息管理需求。

数据库的常见操作主要包括以下几类:一、数据定义操作1. 建立数据库:在磁盘上建立一个新的数据库,用于存储数据。

2. 建立数据表:在数据库中建立一个新的表,用于存储数据。

3. 创建索引:创建一个索引,使查询数据更快捷。

4. 创建视图:创建一个虚拟表,使查询数据更加方便。

二、数据操作操作1. 插入数据:将数据添加到数据库中,使其能够被其他操作使用。

2. 更新数据:更新数据库中已有的数据,使其与新数据保持一致。

3. 删除数据:从数据库中删除已有的数据,以减少不必要的存储空间。

4. 查询数据:使用SQL语句查询数据库中的数据,以获得所需的信息。

三、数据权限操作1. 设置用户权限:为用户分配不同的权限,以管理数据库内容。

2. 设置角色权限:为不同的角色分配不同的权限,以控制数据库的使用。

3. 设置对象权限:为不同的对象分配不同的权限,以控制数据库中特定对象的使用。

4. 设置数据库安全:通过设置合理的权限,防止未经授权的用户访问数据库。

四、数据备份操作1. 备份数据库:使用备份工具将数据库的完整数据备份到磁盘上,以防止数据丢失。

2. 恢复数据库:使用恢复工具将备份的数据恢复到原始数据库,以恢复数据库之前的状态。

3. 日志备份:使用日志备份工具将数据库日志备份到磁盘上,以便检查数据库操作的历史记录。

4. 数据迁移:使用数据迁移工具将数据库从一个服务器迁移到另一个服务器,以改变数据库的位置。

五、数据优化操作1. 索引优化:使用索引优化工具检查并优化数据库中的索引,以改善查询性能。

2. SQL优化:检查并优化SQL语句,以改善查询性能。

3. 数据库结构优化:检查并优化数据库结构,以改善查询性能。

4. 缓存优化:检查并优化数据库缓存,以减少查询次数,提高查询性能。

以上就是关于“数据库的常见操作”的详细说明,数据库的操作可以很大程度上提高数据库的性能,以满足各类信息管理需求。

数据库操作的基本语法大全

数据库操作的基本语法大全

数据库操作的基本语法⼤全1. 操作数据库:CRUD1. C(Create):创建* 创建数据库:* create database 数据库名称;* 创建数据库,判断不存在,再创建:* create database if not exists 数据库名称;* 创建数据库,并指定字符集* create database 数据库名称 character set 字符集名;* 练习:创建db4数据库,判断是否存在,并制定字符集为gbk* create database if not exists db4 character set gbk;2. R(Retrieve):查询* 查询所有数据库的名称:* show databases;* 查询某个数据库的字符集:查询某个数据库的创建语句* show create database 数据库名称;3. U(Update):修改* 修改数据库的字符集* alter database 数据库名称 character set 字符集名称;4. D(Delete):删除* 删除数据库* drop database 数据库名称;* 判断数据库存在,存在再删除* drop database if exists 数据库名称;5. 使⽤数据库* 查询当前正在使⽤的数据库名称* select database();* 使⽤数据库* use 数据库名称;2. 操作表1. C(Create):创建1. 语法:create table 表名(列名1 数据类型1,列名2 数据类型2,....列名n 数据类型n);* 注意:最后⼀列,不需要加逗号(,)* 数据库类型:1. int:整数类型* age int,2. double:⼩数类型* score double(5,2)3. date:⽇期,只包含年⽉⽇,yyyy-MM-dd4. datetime:⽇期,包含年⽉⽇时分秒 yyyy-MM-dd HH:mm:ss5. timestamp:时间错类型包含年⽉⽇时分秒 yyyy-MM-dd HH:mm:ss* 如果将来不给这个字段赋值,或赋值为null,则默认使⽤当前的系统时间,来⾃动赋值6. varchar:字符串* name varchar(20):姓名最⼤20个字符* zhangsan 8个字符张三 2个字符* 创建表create table student(id int,name varchar(32),age int ,score double(4,1),birthday date,insert_time timestamp);* 复制表:* create table 表名 like 被复制的表名;2. R(Retrieve):查询* 查询某个数据库中所有的表名称* show tables;* 查询表结构* desc 表名;3. U(Update):修改1. 修改表名alter table 表名 rename to 新的表名;2. 修改表的字符集alter table 表名 character set 字符集名称;3. 添加⼀列alter table 表名 add 列名数据类型;4. 修改列名称类型alter table 表名 change 列名新列别新数据类型;alter table 表名 modify 列名新数据类型;5. 删除列alter table 表名 drop 列名;4. D(Delete):删除* drop table 表名;* drop table if exists 表名 ;3.增删改表中数据1. 添加数据:* 语法:* insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);* 注意:1. 列名和值要⼀⼀对应。

C#Oracle数据库操作类实例详解

C#Oracle数据库操作类实例详解

C#Oracle数据库操作类实例详解本⽂所述为C#实现的Oracle数据库操作类,可执⾏超多常⽤的Oracle数据库操作,包含了基础数据库连接、关闭连接、输出记录集、执⾏Sql语句,返回带分页功能的dataset 、取表⾥字段的类型和长度等,同时还有哈稀表⾃动插⼊数据库等⾼级任务。

需要特别指出的是:在执⾏SQL语句,返回 DataReader之前⼀定要先⽤.read()打开,然后才能读到数据,再⽤hashTable对数据库进⾏insert,update,del操作,注意此时只能⽤默认的数据库连接"connstr"。

本⽂所述为C#实现的Oracle数据库操作类,可执⾏超多常⽤的Oracle数据库操作,包含了基础数据库连接、关闭连接、输出记录集、执⾏Sql语句,返回带分页功能的dataset 、取表⾥字段的类型和长度等,同时还有哈稀表⾃动插⼊数据库等⾼级任务。

需要特别指出的是:在执⾏SQL语句,返回 DataReader之前⼀定要先⽤.read()打开,然后才能读到数据,再⽤hashTable对数据库进⾏insert,update,del操作,注意此时只能⽤默认的数据库连接"connstr"。

完整的C# Oracle数据库类实例代码如下:using System;using System.Data;using System.Data.OracleClient;using System.Collections;using System.Reflection;namespace MyOraComm{/// ConnDbForOracle 的摘要说明。

public class ConnForOracle{protected OracleConnection Connection;private string connectionString;public ConnForOracle(){string connStr;connStr = System.Configuration.ConfigurationSettings.AppSettings["connStr"].ToString();connectionString = connStr;Connection = new OracleConnection(connectionString);}#region 带参数的构造函数/// 带参数的构造函数/// 数据库联接字符串public ConnForOracle(string ConnString){string connStr;connStr = System.Configuration.ConfigurationSettings.AppSettings[ConnString].ToString();Connection = new OracleConnection(connStr);}#endregion#region 打开数据库/// 打开数据库public void OpenConn(){if(this.Connection.State!=ConnectionState.Open)this.Connection.Open();}#endregion#region 关闭数据库联接/// 关闭数据库联接public void CloseConn(){if(Connection.State==ConnectionState.Open)Connection.Close();}#endregion#region 执⾏SQL语句,返回数据到DataSet中/// 执⾏SQL语句,返回数据到DataSet中/// sql语句/// ⾃定义返回的DataSet表名/// 返回DataSetpublic DataSet ReturnDataSet(string sql,string DataSetName){DataSet dataSet=new DataSet();OpenConn();OracleDataAdapter OraDA=new OracleDataAdapter(sql,Connection);OraDA.Fill(dataSet,DataSetName);// CloseConn();return dataSet;}#endregion/// Sql语句/// 每页显⽰记录数/// <当前页/param>/// 返回dataset表名/// 返回DataSetpublic DataSet ReturnDataSet(string sql,int PageSize,int CurrPageIndex,string DataSetName){DataSet dataSet=new DataSet();OpenConn();OracleDataAdapter OraDA=new OracleDataAdapter(sql,Connection);OraDA.Fill(dataSet,PageSize * (CurrPageIndex - 1), PageSize,DataSetName);// CloseConn();return dataSet;}#endregion#region 执⾏SQL语句,返回 DataReader,⽤之前⼀定要先.read()打开,然后才能读到数据/// 执⾏SQL语句,返回 DataReader,⽤之前⼀定要先.read()打开,然后才能读到数据/// sql语句/// 返回⼀个OracleDataReaderpublic OracleDataReader ReturnDataReader(String sql){OpenConn();OracleCommand command = new OracleCommand(sql,Connection);return command.ExecuteReader(mandBehavior.CloseConnection);}#endregion#region 执⾏SQL语句,返回记录总数数/// 执⾏SQL语句,返回记录总数数/// sql语句/// 返回记录总条数public int GetRecordCount(string sql){int recordCount = 0;OpenConn();OracleCommand command = new OracleCommand(sql,Connection);OracleDataReader dataReader = command.ExecuteReader();while(dataReader.Read()){recordCount++;}dataReader.Close();//CloseConn();return recordCount;}#endregion#region 取当前序列,条件为seq.nextval或seq.currval////// 取当前序列public decimal GetSeq(string seqstr){decimal seqnum = 0;string sql="select "+seqstr+" from dual";OpenConn();OracleCommand command = new OracleCommand(sql,Connection);OracleDataReader dataReader = command.ExecuteReader();if(dataReader.Read()){seqnum=decimal.Parse(dataReader[0].ToString());}dataReader.Close();// CloseConn();return seqnum;}#endregion#region 执⾏SQL语句,返回所影响的⾏数/// 执⾏SQL语句,返回所影响的⾏数public int ExecuteSQL(string sql){int Cmd=0;OpenConn();OracleCommand command = new OracleCommand(sql,Connection);try{Cmd =command.ExecuteNonQuery(); //ExecuteNonQuery⽅法,返回受影响的⾏数,适⽤于insert/update/delete }catch{}}return Cmd;}#endregion//==⽤hashTable对数据库进⾏insert,update,del操作,注意此时只能⽤默认的数据库连接"connstr"#region 根据表名及哈稀表⾃动插⼊数据库⽤法:Insert("test",ht)public int Insert(string TableName,Hashtable ht){OracleParameter[] Parms=new OracleParameter[ht.Count];IDictionaryEnumerator et = ht.GetEnumerator();DataTable dt=GetTabType(TableName);System.Data.OracleClient.OracleType otype;int size=0;int i=0;while ( et.MoveNext() ) // 作哈希表循环{GetoType(et.Key.ToString().ToUpper(),dt,out otype,out size);System.Data.OracleClient.OracleParameter op=MakeParam(":"+et.Key.ToString(),otype,size,et.Value.ToString()); Parms[i]=op; // 添加SqlParameter对象i=i+1;}string str_Sql=GetInsertSqlbyHt(TableName,ht); // 获得插⼊sql语句int val=ExecuteNonQuery(str_Sql,Parms);return val;}#endregion#region 根据相关条件对数据库进⾏更新操作⽤法:Update("test","Id=:Id",ht);public int Update(string TableName,string ht_Where, Hashtable ht){OracleParameter[] Parms=new OracleParameter[ht.Count];IDictionaryEnumerator et = ht.GetEnumerator();DataTable dt=GetTabType(TableName);System.Data.OracleClient.OracleType otype;int size=0;int i=0;// 作哈希表循环while ( et.MoveNext() ){GetoType(et.Key.ToString().ToUpper(),dt,out otype,out size);System.Data.OracleClient.OracleParameter op=MakeParam(":"+et.Key.ToString(),otype,size,et.Value.ToString()); Parms[i]=op; // 添加SqlParameter对象i=i+1;}string str_Sql=GetUpdateSqlbyHt(TableName,ht_Where,ht); // 获得插⼊sql语句int val=ExecuteNonQuery(str_Sql,Parms);return val;}#endregion#region del操作,注意此处条件个数与hash⾥参数个数应该⼀致⽤法:Del("test","Id=:Id",ht)public int Del(string TableName,string ht_Where,Hashtable ht){OracleParameter[] Parms=new OracleParameter[ht.Count];IDictionaryEnumerator et = ht.GetEnumerator();DataTable dt=GetTabType(TableName);System.Data.OracleClient.OracleType otype;int i=0;int size=0;// 作哈希表循环while ( et.MoveNext() ){GetoType(et.Key.ToString().ToUpper(),dt,out otype,out size);System.Data.OracleClient.OracleParameter op=MakeParam(":"+et.Key.ToString(),et.Value.ToString());Parms[i]=op; // 添加SqlParameter对象i=i+1;}string str_Sql=GetDelSqlbyHt(TableName,ht_Where,ht); // 获得删除sql语句int val=ExecuteNonQuery(str_Sql,Parms);return val;}#endregion// ========上⾯三个操作的内部调⽤函数==================#region 根据哈稀表及表名⾃动⽣成相应insert语句(参数类型的)/// 根据哈稀表及表名⾃动⽣成相应insert语句/// 要插⼊的表名/// 哈稀表/// 返回sql语句int i=0;int ht_Count=ht.Count; // 哈希表个数IDictionaryEnumerator myEnumerator = ht.GetEnumerator();string before="";string behide="";while ( myEnumerator.MoveNext() ){if (i==0){before="("+myEnumerator.Key;}else if (i+1==ht_Count){before=before+","+myEnumerator.Key+")";}else{before=before+","+myEnumerator.Key;}i=i+1;}behide=" Values"+before.Replace(",",",:").Replace("(","(:");str_Sql="Insert into "+TableName+before+behide;return str_Sql;}#endregion#region 根据表名,where条件,哈稀表⾃动⽣成更新语句(参数类型的)public static string GetUpdateSqlbyHt(string Table,string ht_Where,Hashtable ht){string str_Sql="";int i=0;int ht_Count=ht.Count; // 哈希表个数IDictionaryEnumerator myEnumerator = ht.GetEnumerator();while ( myEnumerator.MoveNext() ){if (i==0){if (ht_Where.ToString().ToLower().IndexOf((myEnumerator.Key+"=:"+myEnumerator.Key).ToLower())==-1) {str_Sql=myEnumerator.Key+"=:"+myEnumerator.Key;}}else{if (ht_Where.ToString().ToLower().IndexOf((":"+myEnumerator.Key+" ").ToLower())==-1){str_Sql=str_Sql+","+myEnumerator.Key+"=:"+myEnumerator.Key;}}i=i+1;}if (ht_Where==null || ht_Where.Replace(" ","")=="") // 更新时候没有条件{str_Sql="update "+Table+" set "+str_Sql;}else{str_Sql="update "+Table+" set "+str_Sql+" where "+ht_Where;}str_Sql=str_Sql.Replace("set ,","set ").Replace("update ,","update ");return str_Sql;}#endregion#region 根据表名,where条件,哈稀表⾃动⽣成del语句(参数类型的)public static string GetDelSqlbyHt(string Table,string ht_Where,Hashtable ht){string str_Sql="";int i=0;int ht_Count=ht.Count; // 哈希表个数IDictionaryEnumerator myEnumerator = ht.GetEnumerator();while ( myEnumerator.MoveNext() ){if (i==0){if (ht_Where.ToString().ToLower().IndexOf((myEnumerator.Key+"=:"+myEnumerator.Key).ToLower())==-1) {str_Sql=myEnumerator.Key+"=:"+myEnumerator.Key;}if (ht_Where.ToString().ToLower().IndexOf((":"+myEnumerator.Key+" ").ToLower())==-1){str_Sql=str_Sql+","+myEnumerator.Key+"=:"+myEnumerator.Key;}}i=i+1;}if (ht_Where==null || ht_Where.Replace(" ","")=="") // 更新时候没有条件{str_Sql="Delete "+Table;}else{str_Sql="Delete "+Table+" where "+ht_Where;}return str_Sql;}#endregion#region ⽣成oracle参数////// ⽣成oracle参数/// 字段名/// 数据类型/// 数据⼤⼩/// 值public static OracleParameter MakeParam(string ParamName,System.Data.OracleClient.OracleType otype,int size,Object Value) {OracleParameter para=new OracleParameter(ParamName,Value);para.OracleType=otype;para.Size=size;return para;}#endregion#region ⽣成oracle参数public static OracleParameter MakeParam(string ParamName,string Value){return new OracleParameter(ParamName, Value);}#endregion#region 根据表结构字段的类型和长度拼装oracle sql语句参数public static void GetoType(string key,DataTable dt,out System.Data.OracleClient.OracleType otype,out int size){DataView dv=dt.DefaultView;dv.RowFilter="column_name='"+key+"'";string fType=dv[0]["data_type"].ToString().ToUpper();switch (fType){case "DATE":otype= OracleType.DateTime;size=int.Parse(dv[0]["data_length"].ToString());break;case "CHAR":otype= OracleType.Char;size=int.Parse(dv[0]["data_length"].ToString());break;case "LONG":otype= OracleType.Double;size=int.Parse(dv[0]["data_length"].ToString());break;case "NVARCHAR2":otype= OracleType.NVarChar;size=int.Parse(dv[0]["data_length"].ToString());break;case "VARCHAR2":otype= OracleType.NVarChar;size=int.Parse(dv[0]["data_length"].ToString());break;default:otype= OracleType.NVarChar;size=100;break;}}#endregion#region动态取表⾥字段的类型和长度,此处没有动态⽤到connstr,是默认的!by/⽂少public System.Data.DataTable GetTabType(string tabnale){string sql="select column_name,data_type,data_length from all_tab_columns where table_name='"+tabnale.ToUpper()+"'";OpenConn();return (ReturnDataSet(sql,"dv")).Tables[0];public int ExecuteNonQuery(string cmdText, params OracleParameter[] cmdParms) {OracleCommand cmd = new OracleCommand();OpenConn();cmd.Connection=Connection;mandText = cmdText;if (cmdParms != null){foreach (OracleParameter parm in cmdParms)cmd.Parameters.Add(parm);}int val = cmd.ExecuteNonQuery();cmd.Parameters.Clear();//conn.CloseConn();return val;}#endregion}}。

简单快速有趣的MySQL数据库操作类:SimpleDB

简单快速有趣的MySQL数据库操作类:SimpleDB

<?//========================================== // 文件: SimpleDB.class.php// 程序: MySQL数据库操作类// 作者: heiyeluren </heiyeshuwu// 时间: 2006-09-20//==========================================class SimpleDB{/*** 连接标识* @var resource*/var $dbLink;/*** 数据库查询语句* @var string*/var $dbSql;/*** 查询结果* @var resource*/var $dbResult;/*** 查询记录集* @var array*/var $dbRecord;/*** 数据库字符集* @var string*/var $dbCharset = 'GBK';/*** 数据库结果集提取方式* @var int*/var $fetchMode = MYSQL_ASSOC;/*** 日志保存路径* @var string*/var $logPath = '/tmp/mysql_log';/*** 是否记录SQL查询失败的SQL日志,缺省是false* @var bool*/var $isLog = false;/*** 是否在SQL查询出错的时候显示错误并且终止脚本执行,缺省是true** @var bool*/var $isError = true;//--------------------------// 内部接口//--------------------------/*** 构造函数** @param string $db_host 连接主机* @param string $db_user 连接用户* @param string $db_passwd 数据库密码* @param string $db_name 数据库* @param bool $is_pconnect 是否长连接,默认是否* @return SimpleDB*/function SimpleDB($db_host, $db_user, $db_passwd, $db_name, $is_pconnect=false){ $this->connect($db_host, $db_user, $db_passwd, $db_name, $is_pconnect);}/*** 连接数据库** @param string $db_host 数据库主机地址,例如:localhost,或者localhost:3306* @param string $db_user 连接数据库的用户* @param string $db_passwd 用户密码* @param string $db_name 数据库名字* @param boo $is_pconnect 是否使用长连接* @return resource 返回连接资源标识符*/function connect($db_host, $db_user, $db_passwd, $db_name, $is_pconnect){ if ($is_pconnect){return $this->dbLink = @mysql_pconnect($db_host, $db_user, $db_passwd);}$this->dbLink = @mysql_connect($db_host, $db_user, $db_passwd);@mysql_select_db($db_name, $this->dbLink);$mysql_version = $this->getOne("SELECT VERSION()");if ($this->dbCharset!='' && preg_match("/^(5.|4.1)/", $mysql_version)){ $this->query("SET NAMES '$this->dbCharset'", $this->dbLink);}return $this->dbLink;}/*** 关闭数据库连接** @return bool 是否成功关闭连接*/function disconnect(){$ret = @mysql_close($this->dbLink);$this->dbLink = null;return $ret;}/*** 设置查询结果返回数据类型** @param int $modeType 设置查询结果返回设置,1为关联索引和数字所有都有,2为使用关联索引,3为使用数字索引*/function setFetchMode($modeType){switch ($modeType){case 1: //数字索引和关联索引都有$this->fetchMode = MYSQL_BOTH;break;case 2: //使用关联索引$this->fetchMode = MYSQL_ASSOC;break;case 3: //使用数字索引$this->fetchMode = MYSQL_NUM;break;default://缺省使用关联索引$this->fetchMode = MYSQL_ASSOC;}}* 设置数据库客户端提取结果集的字符编码** @param string $charset 编码的字符串,比如UTF8,GBK之类的,缺省是GBK */function setCharset($charset){if ($charset != ''){$this->dbCharset = $charset;}}/*** 设置日志存储路径** @param string $log_path 日志路径,该必须是可写的*/function setLogPath($log_path){if ($log_path != ''){$this->logPath = $log_path;}}/*** 写SQL执行日志** @param string $sql 查询的SQL语句* @param string $file 当前执行查询的文件*/function writeLog($sql, $file){if (!file_exists($this->logPath)){@mkdir($this->logPath);}$log_file = $this->logPath ."/mysql_".date("Y-m-d").".log";$log_msg = "[".date("Y-m-d H:i:s")."] - ".$file.": ".$sql." ";error_log($log_msg, 3, $log_file);}/*** 显示上依次SQL执行错误的错误信息*/function showError(){$errMessage = "MySQL query error ". mysql_errno($this->dbLink) .": ". mysql_error($this->dbLink);die($errMessage);/*** 返回MySQL的版本信息** @return string Mysql的版本*/function getVersion(){return $this->getOne("SELECT VERSION()");}/*** 查询操作的底层接口** @param string $sql 要执行查询的SQL语句* @return bool 执行成功返回true,失败返回false*/function query($sql){$this->dbSql = $sql;$this->dbResult = null;$this->dbResult = @mysql_query($sql, $this->dbLink);if ($this->dbResult === false){if ($this->isLog){$this->writeLog($sql, __FILE__);}if ($this->isError){$this->showError();}return false;}return true;}//--------------------------// 数据获取接口//--------------------------/*** 获取SQL执行的全部结果集(二维数组)** @param string $sql 需要执行查询的SQL语句* @return 成功返回查询结果的二维数组,失败返回false*/function getAll($sql){if (!$this->query($sql)){return false;}$this->dbRecord = array();while ($row = @mysql_fetch_array($this->dbResult, $this->fetchMode)) { $this->dbRecord[] = $row;}@mysql_free_result($this->dbResult);if (!is_array($this->dbRecord) || empty($this->dbRecord)){return false;}return $this->dbRecord;}/*** 获取单行记录(一维数组)** @param string $sql 需要执行查询的SQL语句* @return 成功返回结果记录的一维数组,失败返回false*/function getRow($sql){if (!$this->query($sql)){return false;}$this->dbRecord = array();$this->dbRecord = @mysql_fetch_array($this->dbResult, $this->fetchMode);@mysql_free_result($this->dbResult);if (!is_array($this->dbRecord) || empty($this->dbRecord)){return false;}return $this->dbRecord;}/*** 获取一列数据(一维数组)** @param string $sql 需要获取的字符串* @param string $field 需要获取的列,如果不指定,默认是第一列* @return 成功返回提取的结果记录的一维数组,失败返回false*/function getCol($sql, $field=''){if (!$this->query($sql)){return false;}$this->dbRecord = array();while($row = @mysql_fetch_array($this->dbResult, $this->fetchMode)){ if (trim($field) == ''){$this->dbRecord[] = current($row);} else {$this->dbRecord[] = $row[$field];}}@mysql_free_result($this->dbResult);if (!is_array($this->dbRecord) || empty($this->dbRecord)){ return false;}return $this->dbRecord;}/*** 获取一个数据(当条数组)** @param string $sql 需要执行查询的SQL* @return 成功返回获取的一个数据,失败返回false*/function getOne($sql, $field=''){if (!$this->query($sql)){return false;}$this->dbRecord = array();$row = @mysql_fetch_array($this->dbResult, $this->fetchMode);@mysql_free_result($this->dbResult);if (!is_array($row) || empty($row)){return false;}if (trim($field) != ''){$this->dbRecord = $row[$field];}else{$this->dbRecord = current($row);}return $this->dbRecord;}/*** 获取指定各种条件的记录** @param string $table 表名(访问的数据表)* @param string $field 字段(要获取的字段)* @param string $where 条件(获取记录的条件语句,不包括WHERE,默认为空)* @param string $order 排序(按照什么字段排序,不包括ORDER BY,默认为空)* @param string $limit 限制记录(需要提取多少记录,不包括LIMIT,默认为空)* @param bool $single 是否只是取单条记录(是调用getRow还是getAll,默认是false,即调用getAll)* @return 成功返回记录结果集的数组,失败返回false*/function getRecord($table, $field='*', $where='', $order='', $limit='', $single=false){ $sql = "SELECT $field FROM $table";$sql .= trim($where)!='' ? " WHERE $where " : $where;$sql .= trim($order)!='' ? " ORDER BY $order" : $order;$sql .= trim($limit)!='' ? " LIMIT $limit" : $limit;if ($single){return $this->getRow($sql);}return $this->getAll($sql);}/*** 获取指点各种条件的记录(跟getRecored类似)** @param string $table 表名(访问的数据表)* @param string $field 字段(要获取的字段)* @param string $where 条件(获取记录的条件语句,不包括WHERE,默认为空)* @param array $order_arr 排序数组(格式类似于: array('id'=>true), 那么就是按照ID为顺序排序, array('id'=>false), 就是按照ID逆序排序)* @param array $limit_arr 提取数据的限制数组()* @return unknown*/function getSpecifyRecord($table, $field='*', $where='', $order_arr=array(),$limit_arr=array()){$sql = "SELECT $field FROM $table";$sql .= trim($where)!='' ? " WHERE $where " : $where;if (is_array($order_arr) && !empty($order_arr)){$arr_key = key($order_arr);$sql .= " ORDER BY $arr_key " . ($order_arr[$arr_key] ? "ASC" : "DESC");}if (is_array($limit_arr) && !empty($limit_arr)){$start_post = intval(array_shift($limit_arr));$offset = intval(array_shift($limit_arr));$sql .= " LIMIT $start_post,$offset";}return $this->getAll($sql);}/*** 获取指定条数的记录** @param string $table 表名* @param int $start_pos 开始记录* @param int $offset 偏移量* @param string $field 字段名* @param string $where 条件(获取记录的条件语句,不包括WHERE,默认为空)* @param string $order 排序(按照什么字段排序,不包括ORDER BY,默认为空)* @return 成功返回包含记录的二维数组,失败返回false*/function getLimitRecord($table, $start_pos, $offset, $field='*', $where='', $oder=''){ $sql = "SELECT $field FROM $table";$sql .= trim($where)!='' ? " WHERE $where " : $where;$sql .= trim($order)!='' ? " ORDER BY $order" : $order;$sql .= "LIMIT $start_pos,$offset";return $this->getAll($sql);}/*** 获取排序记录** @param string $table 表名* @param string $order_field 需要排序的字段(比如id)* @param string $order_method 排序的方式(1为顺序, 2为逆序, 默认是1)* @param string $field 需要提取的字段(默认是*,就是所有字段)* @param string $where 条件(获取记录的条件语句,不包括WHERE,默认为空)* @param string $limit 限制记录(需要提取多少记录,不包括LIMIT,默认为空)* @return 成功返回记录的二维数组,失败返回false*/function getOrderRecord($table, $order_field, $order_method=1, $field='*', $where='', $limit=''){//$order_method的值为1则为顺序, $order_method值为2则2则是逆序排列$sql = "SELECT $field FROM $table";$sql .= trim($where)!='' ? " WHERE $where " : $where;$sql .= " ORDER BY $order_field " . ( $order_method==1 ? "ASC" : "DESC");$sql .= trim($limit)!='' ? " LIMIT $limit" : $limit;return $this->getAll($sql);}/*** 分页查询(限制查询的记录条数)** @param string $sql 需要查询的SQL语句* @param int $start_pos 开始记录的条数* @param int $offset 每次的偏移量,需要获取多少条* @return 成功返回获取结果记录的二维数组,失败返回false*/function limitQuery($sql, $start_pos, $offset){$start_pos = intval($start_pos);$offset = intval($offset);$sql = $sql . " LIMIT $start_pos,$offset ";return $this->getAll($sql);}//--------------------------// 无数据返回操作//--------------------------/*** 执行执行非Select查询操作** @param string $sql 查询SQL语句* @return bool 成功执行返回true, 失败返回false*/function execute($sql){if (!$this->query($sql)){return false;}$count = @mysql_affected_rows($this->dbLink);if ($count <= 0){return false;}return true;}/*** 自动执行操作(针对Insert/Update操作)** @param string $table 表名* @param array $field_array 字段数组(数组中的键相当于字段名,数组值相当于值, 类似array( 'id' => 100, 'user' => 'heiyeluren')* @param int $mode 执行操作的模式(是插入还是更新操作, 1是插入操作Insert, 2是更新操作Update)* @param string $where 如果是更新操作,可以添加WHERE的条件* @return bool 执行成功返回true, 失败返回false*/function autoExecute($table, $field_array, $mode, $where=''){if ($table=='' || !is_array($field_array) || empty($field_array)){ return false;}//$mode为1是插入操作(Insert), $mode为2是更新操作if ($mode == 1){$sql = "INSERT INTO $table SET ";}else{$sql = "UPDATE $table SET ";}foreach ($field_array as $key => $value){$sql .= "$key='$value',";}$sql = rtrim($sql, ',');if ($mode==2 && $where!=''){$sql .= "WHERE $where";}return $this->execute($sql);}//--------------------------// 其他数据相关操作//--------------------------/*** 获取最后一次查询的SQL语句** @return string 返回最后一次查询的SQL语句*/function getLastSql(){return $this->dbSql;}/*** 获取上次插入操作的的ID** @return int 如果没有连接或者查询失败,返回0, 成功返回ID*/function getLastId(){if (!$this->dbLink){return 0;}if (($last_id = mysql_insert_id($this->dbLink)) > 0){ return $last_id;}return $this->getOne("SELECT LAST_INSERT_ID()");}/*** 获取记录集里面的记录条数(用于Select操作)** @return int 如果上一次无结果集或者记录结果集为空,返回0, 否则返回结果集数量*/function getNumRows(){if (!$this->dbResult){return 0;}return mysql_num_rows($this->dbResult);}/*** 获取受到影响的记录数量(用于Update/Delete/Insert操作)** @return int 如果没有连接或者影响记录为空, 否则返回影响的行数量*/function getAffectedRows(){if (!$this->dbLink){return 0;}return mysql_affected_rows($this->dbLink);}}?>。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

using System.Data.SqlClient;
public class DataConn
{
public DataConn() { }
public static string strconn =
ConfigurationManager.ConnectionStrings["xsconstr"].ConnectionString;
public static SqlConnection CreateConn()
{
SqlConnection conn = new SqlConnection(strconn);
return conn;
}
public static SqlDataReader ExecuterRead(string cmdtext, SqlConnection conn)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
mandText = cmdtext;
SqlDataReader dr = cmd.ExecuteReader();
return dr;
}
public static SqlDataReader ExecuterRead(string cmdtext, SqlConnection conn, params SqlParameter[] array1)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
mandText = cmdtext;
foreach (SqlParameter para in array1)
cmd.Parameters.Add(para);
SqlDataReader dr = cmd.ExecuteReader();
return dr;
}
public static int ExecuteNonRead(string cmdtext)
{
SqlConnection conn = CreateConn();
conn.Open();
SqlCommand cmd = new SqlCommand(cmdtext, conn);
int i = cmd.ExecuteNonQuery();
conn.Close();
return i;
}
public static int ExecuteNonRead(string cmdtext, params SqlParameter[] array)
{
SqlConnection conn = CreateConn();
conn.Open();
SqlCommand cmd = new SqlCommand(cmdtext, conn);
foreach (SqlParameter para in array)
cmd.Parameters.Add(para);
int i = cmd.ExecuteNonQuery();
conn.Close();
return i;
}
public static object ExecuteQueryValue(string cmdtext, params SqlParameter[] array)
{
SqlConnection conn = CreateConn();
conn.Open();
SqlCommand cmd = new SqlCommand(cmdtext, conn);
foreach (SqlParameter para in array)
cmd.Parameters.Add(para);
object o = cmd.ExecuteScalar();
conn.Close();
return o;
}
public static object ExecuteQueryValue(string cmdtext)
{
SqlConnection conn = CreateConn();
conn.Open();
SqlCommand cmd = new SqlCommand(cmdtext, conn);
object o = cmd.ExecuteScalar();
conn.Close();
return o;
}
public static DataSet ExecuteReturnDataSet(string cmdtext, params SqlParameter[] array) {
SqlConnection conn = CreateConn();
conn.Open();
SqlCommand cmd = new SqlCommand(cmdtext, conn);
foreach (SqlParameter para in array)
cmd.Parameters.Add(para);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet ds=new DataSet ();
adapter.Fill(ds);
conn.Close();
return ds;
}
public static DataTable ExecuteReturnDataTable(string cmdtext, params SqlParameter[] array)
{
SqlConnection conn = CreateConn();
conn.Open();
SqlCommand cmd = new SqlCommand(cmdtext, conn);
foreach (SqlParameter para in array)
cmd.Parameters.Add(para);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable dt = new DataTable ();
adapter.Fill(dt);
conn.Close();
return dt;
}
}。

相关文档
最新文档