1 连接Sql Server的ConnectionString:

Data Source=.;Initial Catalog=ViewVideo;User ID=sa;Password=XXXXXX;

2 连接MySql的ConnectionString:

Database=dbname;Data Source=192.168.1.1;Port=3306;User Id=root;Password=****;Charset=utf8;TreatTinyAsBoolean=false;

3 连接Oracle的ConnectionString:

Data Source=(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.117)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl.192.168.1.117)
)
);User Id=scott;Password=XXXXXX //不能有';'

OracleHelper.cs:

 public class OracleHepler
{
//链接字符串
private static readonly string connStr = ConfigurationManager.ConnectionStrings["dbconnStr"].ConnectionString; /// <summary>
/// 创建链接
/// </summary>
/// <returns>链接</returns>
public static OracleConnection CreateConnection()
{
OracleConnection conn = new OracleConnection(connStr);
conn.Open();
return conn;
} /// <summary>
/// 使用亦有链接的 非查询
/// </summary>
/// <param name="conn">链接</param>
/// <param name="sql">sql文本</param>
/// <param name="parameters">sql参数</param>
/// <returns>受影响行数</returns>
public static int ExecuteNonQuery(OracleConnection conn, string sql, params OracleParameter[] parameters)
{
using (OracleCommand cmd = new OracleCommand(sql, conn))
{
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteNonQuery();
}
} /// <summary>
/// 自己创建链接的 非查询
/// </summary>
/// <param name="sql">sql文本</param>
/// <param name="parameters">sql参数</param>
/// <returns>受影响行数</returns>
public static int ExecuteNonQuery(string sql, params OracleParameter[] parameters)
{
using (OracleConnection conn = CreateConnection())
{
return ExecuteNonQuery(conn, sql, parameters);
}
} /// <summary>
/// 使用已有链接的 带存储过程的Insert非查询,直接写存储过程参数
/// </summary>
/// <param name="conn">已有链接</param>
/// <param name="proName">存储过程名称</param>
/// <param name="strInsertSQL">执行插入的sql语句,或者其他操作sql语句</param>
/// <param name="seqName">序列的名称</param>
/// <returns>当前序列号,即ID</returns>
public static object ExecuteNonQueryWithProduce(OracleConnection conn, string proName, string strInsertSQL, string seqName)
{
using (OracleCommand cmd = new OracleCommand(proName, conn)) //命令中执行的不在是sql,而是存储过程
{
try
{
cmd.CommandType = CommandType.StoredProcedure; //标记该命令的类型不是sql,而是存储过程
//存储过程中有参数名称,以及设置对应参数的值
cmd.Parameters.Add(new OracleParameter("strInsertSQL", OracleDbType.Varchar2) { Value = strInsertSQL }); ////存储过程中的参入参数 strInsertSQL
cmd.Parameters.Add(new OracleParameter("seqName", OracleDbType.Varchar2) { Value = seqName }); // //存储过程中的传入参数 seqName
cmd.Parameters.Add(new OracleParameter("ID", OracleDbType.Int32) { Direction = ParameterDirection.Output }); //存储过程中的传出参数ID,只需要声明
//cmd.Parameters.AddRange(parameters);
cmd.ExecuteNonQuery();
string newId = cmd.Parameters["ID"].Value.ToString(); //获得传出参数的ID的值
return newId;
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
}
} /// <summary>
/// 自己创建链接的 带存储过程的Insert非查询,直接写存储过程参数
/// </summary>
/// <param name="proName">存储过程名称</param>
/// <param name="strInsertSQL">执行插入的sql语句,或者其他操作sql语句</param>
/// <param name="seqName">序列的名称</param>
/// <returns>当前序列号,即ID</returns>
public static object ExecuteNonQueryWithProduce(string proName, string strInsertSQL, string seqName)
{
using (OracleConnection conn = CreateConnection())
{
return ExecuteNonQueryWithProduce(conn, proName, strInsertSQL, seqName);
}
} /// <summary>
/// 使用已有链接的 带存储过程的Insert非查询,传存储过程参数
/// </summary>
/// <param name="conn">已有链接</param>
/// <param name="proName">存储过程名称</param>
/// <param name="parameters">存储过程中的传入、传出参数 数组</param>
/// <returns>当前序列号,即ID</returns>
public static object ExecuteNonQueryWithProduce(OracleConnection conn, string proName, params OracleParameter[] parameters)
{
using (OracleCommand cmd = new OracleCommand(proName, conn)) //命令中执行的不在是sql,而是存储过程
{
//try
//{
cmd.CommandType = CommandType.StoredProcedure; //标记该命令的类型不是sql,而是存储过程
////存储过程中有参数名称,以及设置对应参数的值
//cmd.Parameters.Add(new OracleParameter("strInsertSQL", OracleDbType.Varchar2) { Value = strInsertSQL }); ////存储过程中的参入参数 strInsertSQL
//cmd.Parameters.Add(new OracleParameter("seqName", OracleDbType.Varchar2) { Value = seqName }); // //存储过程中的传入参数 seqName
//cmd.Parameters.Add(new OracleParameter("ID", OracleDbType.Int32) { Direction = ParameterDirection.Output }); //存储过程中的传出参数ID,只需要声明
cmd.Parameters.AddRange(parameters); //参数中包括存储过程的传入传出参数,以及子sql语句中的参数 --------------****-----------------
int i = cmd.ExecuteNonQuery(); //直接返回执行插入之后,存储过程传出的变量值
object newId = cmd.Parameters["ID"].Value; //获得传出参数的ID的值
return newId;
//}
//catch (Exception ex)
//{
// throw new Exception(ex.ToString());
//}
}
} /// <summary>
/// 自己创建链接的 带存储过程的Insert非查询,传存储过程参数
/// </summary>
/// <param name="proName">存储过程名称</param>
/// <param name="parameters">存储过程中的传入、传出参数 数组</param>
/// <returns>当前序列号,即ID</returns>
public static object ExecuteNonQueryWithProduce(string proName, params OracleParameter[] parameters)
{
using (OracleConnection conn = CreateConnection())
{
return ExecuteNonQueryWithProduce(conn, proName, parameters);
}
} /// <summary>
/// 使用已有链接的 单查询
/// </summary>
/// <param name="conn">链接</param>
/// <param name="sql">sql文本</param>
/// <param name="parameters">sql参数</param>
/// <returns>查询到的一条结果</returns>
public static object ExecuteScalar(OracleConnection conn, string sql, params OracleParameter[] parameters)
{
using (OracleCommand cmd = new OracleCommand(sql, conn))
{
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteScalar();
}
} /// <summary>
/// 自己创建链接的 单查询
/// </summary>
/// <param name="sql">sql文本</param>
/// <param name="parameters">sql参数</param>
/// <returns>查询到的一条结果</returns>
public static object ExecuteScalar(string sql, params OracleParameter[] parameters)
{
using (OracleConnection conn = CreateConnection())
{
return ExecuteScalar(conn, sql, parameters);
}
} /// <summary>
/// 使用已有链接的 reader查询
/// </summary>
/// <param name="conn">链接</param>
/// <param name="sql">sql文本</param>
/// <param name="parameters">sql参数</param>
/// <returns>查询到的结果集table</returns>
public static DataTable ExecuteReader(OracleConnection conn, string sql, params OracleParameter[] parameters)
{
DataTable table = new DataTable();
using (OracleCommand cmd = new OracleCommand(sql, conn))
{
cmd.Parameters.AddRange(parameters);
using (OracleDataReader reader = cmd.ExecuteReader())
{
table.Load(reader);
}
}
return table;
} /// <summary>
/// 自己创建链接的 reader查询
/// </summary>
/// <param name="sql">sql文本</param>
/// <param name="parameters">sql参数</param>
/// <returns>查询到的结果集table</returns>
public static DataTable ExecuteReader(string sql, params OracleParameter[] parameters)
{
using (OracleConnection conn = CreateConnection())
{
return ExecuteReader(conn, sql, parameters);
}
} /// <summary>
/// 使用已有链接的 stream查询
/// </summary>
/// <param name="conn">链接</param>
/// <param name="sql">sql文本</param>
/// <param name="parameters">sql参数</param>
/// <returns>查询到的结果流stream</returns>
public static System.IO.Stream ExecuteStream(OracleConnection conn, string sql, params OracleParameter[] parameters)
{
using (OracleCommand cmd = new OracleCommand(sql, conn))
{
cmd.Parameters.AddRange(parameters);
using (System.IO.Stream stream = cmd.ExecuteStream())
{
return stream;
}
}
} /// <summary>
/// 自己创建链接的stream查询
/// </summary>
/// <param name="sql">sql文本</param>
/// <param name="parameters">sql参数</param>
/// <returns>查询到的结果流stream</returns>
public static System.IO.Stream ExecuteStream(string sql, params OracleParameter[] parameters)
{
using (OracleConnection conn = CreateConnection())
{
return ExecuteStream(conn, sql, parameters);
}
}
}

OracleHelper.cs

DbHelper.cs

 public class DbHelper
{
private static readonly string connStr = ConfigurationManager.ConnectionStrings["dbconnStr"].ConnectionString; //创建连接
public static IDbConnection CreateConnection()
{
IDbConnection conn = new OracleConnection(connStr);
conn.Open();
return conn;
} //把字典中的参数都加入到cmd得参数集合中
public static void DictAddToCmdParameters(IDbCommand cmd,Dictionary<string,object> dict)
{
foreach(KeyValuePair<string,object> kvp in dict)
{
IDataParameter parameters = cmd.CreateParameter();
parameters.ParameterName = kvp.Key;
parameters.Value = kvp.Value;
cmd.Parameters.Add(parameters);
}
} //使用已有连接的 非查询
public static int ExecuteNonQuery(IDbConnection conn,string sql,Dictionary<string,object> dict)
{
using(IDbCommand cmd=conn.CreateCommand())
{
cmd.CommandText = sql;
DictAddToCmdParameters(cmd, dict);
return cmd.ExecuteNonQuery();
}
} //使用已有连接的 非查询 带事务处理
public static int ExecuteNonQuery(IDbConnection conn,IDbTransaction tx,string sql,Dictionary<string,object> dict)
{
using(IDbCommand cmd=conn.CreateCommand())
{
cmd.Transaction = tx;
cmd.CommandText = sql;
DictAddToCmdParameters(cmd, dict);
return cmd.ExecuteNonQuery();
}
} //自己创建连接的 非查询
public static int ExecuteNonQuery(string sql,Dictionary<string,object> dict)
{
using(IDbConnection conn=CreateConnection())
{
return ExecuteNonQuery(sql,dict);
}
} //使用已有连接的 单查询
public static object ExecuteScalar(IDbConnection conn,string sql,Dictionary<string,object> dict)
{
using(IDbCommand cmd=conn.CreateCommand())
{
cmd.CommandText = sql;
DictAddToCmdParameters(cmd, dict);
return cmd.ExecuteScalar();
}
} //自己创建连接的 单查询
public static object ExecuteScalar(string sql,Dictionary<string,object> dict)
{
using(IDbConnection conn=CreateConnection())
{
return ExecuteScalar(conn, sql, dict);
}
} //使用已有连接的 Reader查询
public static DataTable ExecuteReader(IDbConnection conn,string sql,Dictionary<string,object> dict)
{
DataTable table = new DataTable();
using(IDbCommand cmd=conn.CreateCommand())
{
cmd.CommandText = sql;
DictAddToCmdParameters(cmd, dict);
using (IDataReader reader = cmd.ExecuteReader())
{
table.Load(reader);
}
}
return table;
} //自己创建连接的 Reader查询
public static DataTable ExecuteReader(string sql,Dictionary<string,object> dict)
{
using(IDbConnection conn=CreateConnection())
{
return ExecuteReader(conn, sql, dict);
}
} //使用已有连接的 DataAdapter查询
public static DataTable ExecuteDataAdapter(IDbConnection conn,string sql,Dictionary<string,object> dict)
{
using(IDbCommand cmd=conn.CreateCommand())
{
cmd.CommandText = sql;
DictAddToCmdParameters(cmd, dict);
IDataAdapter adapter = GetDataAdapter(cmd);//获得查询的数据库结果
DataSet dataset = new DataSet();
adapter.Fill(dataset);
return dataset.Tables[];
}
} //自己创建连接的 DataAdapter查询
public static DataTable ExecuteDataAdapter(string sql,Dictionary<string,object> dict)
{
using(IDbConnection conn=CreateConnection())
{
return ExecuteDataAdapter(conn, sql, dict);
}
} //获得查询到的数据库结果
private static IDataAdapter GetDataAdapter(IDbCommand cmd)
{
IDataAdapter adapter;//DataAdapter的访问限制为protected,不能new
if (cmd is OracleCommand)//需引用Oracle.DataAccess.Client
{
OracleCommand oracmd = cmd as OracleCommand;
adapter = new OracleDataAdapter(oracmd);
}
//else if (cmd is MySqlCommand)//需引用mysql.data.client
//{
// MySqlCommand mycom = cmd as MySqlCommand;
// adapter = new MySqlDataAdapter(mycom);
//}
else if (cmd is SqlCommand)//需引用System.Data.SqlClient;
{
SqlCommand sqlcom = cmd as SqlCommand;
adapter = new SqlDataAdapter(sqlcom);
}
else
{
throw new Exception("需要其他数据库的DataAdapter");
}
return adapter;
} /// <summary>
/// 执行SqlBulkCopy或OracleBulkCopy批量拷贝,传入一个实体的公共类型,约定其属性名与DB中列名相同
/// </summary>
/// <param name="type"></param>
/// <returns>返回该类型对应的表的架构</returns>
public static DataTable ExecuteBulkCopy(Type type)
{
//创建表的架构
DataTable table = new DataTable();
DataColumn column = new DataColumn();
//Type type = typeof(Person);//传入实体类Person
PropertyInfo[] properties = type.GetProperties();
//创建表的列
foreach (PropertyInfo property in properties)
{
column.ColumnName = property.Name;
column.DataType = property.PropertyType;
table.Columns.Add(column);
}
return table;
} /// <summary>
/// 遍历: 把每个数据中数据依次填充到该表的row中
/// </summary>
/// <param name="table"></param>
/// <param name="type"></param>
/// <param name="line"></param>
/// <returns>返回填充了一行数据的表</returns>
public static DataTable RowAddTable(DataTable table, Type type, string[] line)//line中个数必须与列数量相同
{
//填入表的行
DataRow row = table.NewRow();
PropertyInfo[] properties = type.GetProperties();
int i = ;
foreach (PropertyInfo property in properties)//属性名对应列名
{
row[property.Name] = line[i];
i++;
}
table.Rows.Add(row);
return table;
} /// <summary>
/// 把当前表写入目标表(目标表和当前表列名相同)
/// </summary>
/// <param name="destTableName"></param>
/// <param name="currentTabele"></param>
public static bool BulkCopyMapping(string destTableName, DataTable currentTabele)
{
bool falg = false;
//using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connStr))
using (OracleBulkCopy bulkCopy = new OracleBulkCopy(connStr))//oracle在这里不能用事务,sql server可以
{ bulkCopy.DestinationTableName = destTableName;
foreach (DataColumn column in currentTabele.Columns)
{
bulkCopy.ColumnMappings.Add(column.ColumnName, column.ColumnName);//目标表和当前表列名相同
}
try
{
bulkCopy.WriteToServer(currentTabele);//把当前表写入目标表
falg = true;
}
catch (Exception ex)
{
falg = false;
throw new Exception(ex.ToString());
}
}
return falg;
}
}
class Person//BulkCopy直接传了Type所以没用到
{
public int Id{get;set;}
public string Name{get;set;}
}

DbHelper.cs

DbHelper and OracleHelper的更多相关文章

  1. OracleHelper数据库事务处理

    原理:需要开启事务的Action贴上Transaction标签,则Action执行前开启事务,Action执行完提交事务,如果Action报错,则回滚事务. OracleHelper代码: using ...

  2. 职责链模式(chain of responsibility)

    一. 写在前面的 这么多的设计模式,我觉得职责链是我第一次看上去最简单,可是回想起来却又最复杂的一个模式. 因此,这个文章我酝酿了很久,一直也没有胆量发出来,例子也是改了又改,可是仍然觉得不够合理.所 ...

  3. 重温设计模式(三)——职责链模式(chain of responsibility)

    一. 写在前面的 这么多的设计模式,我觉得职责链是我第一次看上去最简单,可是回想起来却又最复杂的一个模式. 因此,这个文章我酝酿了很久,一直也没有胆量发出来,例子也是改了又改,可是仍然觉得不够合理.所 ...

  4. wcf调用oracle存储过程

    public IList<ACCP_RAIN> QueryAll(string beginTime, string endTime, string type) { beginTime = ...

  5. 我也来写:数据库访问类DBHelper

    一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以 ...

  6. 我也来写:数据库访问类DBHelper(转)

    一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以 ...

  7. 关于SqlServer的DBHelper类以及数据分页

    前端: <My:AspNetPager class="arPage" PageSize="20" UrlPaging="true" r ...

  8. c# 轻量级 ORM 框架 之 DBHelper 实现 (三)

    周末了比较清闲,把自己的orm框架整理了下,开源了. 已经做出来的东西通常感觉有些简单,一些新手或许听到"框架"一类的词觉得有些"高深",简单来说orm就是把a ...

  9. c#连接oracle数据库 DBHelper

    闲着没事自己写了一个OracleHelper类,希望大神给点建议优化 using System; using System.Collections.Generic; using System.Linq ...

随机推荐

  1. 选中excel中的对象

    2007在查找和选择中点击“选择对象”,然后再全选全个sheet(ctrl+a)就可以看到了. 2010 “选择对象”在  开始——查找和选择——选择对象

  2. 泛形集合List<T>

    public class Person { /// <summary> /// 姓名 /// </summary> private string name; public st ...

  3. mybatis的javaType和ofType

    都是指定对象的类型 不同的是当使用反向查询select从另一个maper文件中取出数据时必须用ofType 都可以为collection和association是指定对象的类型, 都不是必须写的, 只 ...

  4. 根据不同ip进入不同页面

    function GetIP() { $cip = ""; if(!empty($_SERVER["HTTP_CLIENT_IP"])){ $cip = $_S ...

  5. Java NIO(New I/O)的三个属性position、limit、capacity

    Java NIO(New I/O)的三个属性position.limit.capacity 在缓冲区中,最重要的属性有下面三个,它们一起合作完成对缓冲区内部状态的变化跟踪: capacity posi ...

  6. 区分JS中的undefined,null,"",0和false

    在程序语言中定义的各种各样的数据类型中,我们都会为其定义一个"空值"或"假值",比如对象类型的空值null,.NET Framework中数据库 字段的空值DB ...

  7. Ubuntu Server 中resolv.conf重启时被覆盖的问题

    /etc/resolv.conf中设置dns之后每次重启Ubuntu Server时该文件会被覆盖,针对这种情况找了一些个解决方法 防止/etc/resolv.conf被覆盖的方法 方法一 1.需要创 ...

  8. QTreeView只显示指定驱动器及其目录,隐藏所有兄弟节点

    MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setup ...

  9. DBNull.Value 字段的用法

    DBNull 是一个单独的类,这意味着该类只能存在此实例.它指数据库中数据为空(<NULL>)时,在.net中的值 如果数据库字段的数据缺失,则您可以使用 DBNull.Value 属性将 ...

  10. 217. Contains Duplicate

    题目: Given an array of integers, find if the array contains any duplicates. Your function should retu ...