设为首页 收藏本站
查看: 884|回复: 0

[经验分享] C# 数据库的基本操作(oracle)

[复制链接]

尚未签到

发表于 2016-8-11 07:45:58 | 显示全部楼层 |阅读模式
  配置文件如下:
  



<appSettings>
<add key="ServiceName" value="lev2" />
<add key="UserID" value="DBNAME" />
<add key="UserPsw" value="DBPASSWORD" />
</appSettings>



基本操作类如下:  

using System;
using System.Data;
using System.Data.OracleClient;
using System.Configuration;
using System.Collections;
using System.Text;
namespace Common
{
/// <summary>
/// CommonClass 的摘要说明
/// </summary>
public class OracleServerDAL
{
OracleConnection connect = null;
OracleCommand command = null;
OracleDataReader reader = null;
OracleDataAdapter adapter = null;
DataSet ds = null;
public OracleServerDAL()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public string GetConnStr()
{
string[] configStrings = ConfigHelper.ReadDBConfig();
string serviceName = "";
string userID = "";
string userPSW = "";
if (configStrings[0] == null || configStrings[1] == null || configStrings[2] == null)
{
return "";
}
serviceName = ConfigHelper.GetAppConfig("ServiceName");
userID = configStrings[1];
userPSW = configStrings[2];
string constr = string.Format("DATA SOURCE={0};user={1};password={2};", serviceName, userID, userPSW);
return constr;
}
/// <summary>
/// 建立与数据库的连接
/// </summary>
public void connectionData()
{
try
{
if (connect == null)
{
string constr = GetConnStr();
if (string.IsNullOrEmpty(constr))
{
connect = new OracleConnection(DefineConst.constr);
}
else
{
connect = new OracleConnection(constr);
}
}
if (connect.State == ConnectionState.Closed)
{
connect.Open();
}
}
catch (Exception e)
{
Console.Write(e.Message);
}
}
/// <summary>
/// 获取数据库连接
/// </summary>
/// <returns></returns>
public static OracleConnection GetConnection()
{
return new OracleConnection(DefineConst.constr);
}
/// <summary>
/// 获取数据库连接字符串
/// </summary>
/// <returns></returns>
public static string GetConnectionStr()
{
string[] configStrings = ConfigHelper.ReadDBConfig();
string serviceName = "";
string userID = "";
string userPSW = "";
if (configStrings[0] == null || configStrings[1] == null || configStrings[2] == null)
{
return "";
}
serviceName = ConfigHelper.GetAppConfig("ServiceName");
userID = configStrings[1];
userPSW = configStrings[2];
string constr = string.Format("DATA SOURCE={0};user={1};password={2};", serviceName, userID, userPSW);
return constr;
}
/// <summary>
/// 关闭数据库连接
/// </summary>
public void closeConnect()
{
try
{
if (connect != null)
{
if (connect.State == ConnectionState.Open)
{
connect.Close();
}
connect.Dispose();
connect = null;
}
}
catch (Exception e)
{
Console.Write(e.Message);
}
}
/// <summary>
/// 返回查询记录集DataSet
/// </summary>
/// <returns>System.Data.OracleClient.OracleDataReader</returns>
public DataSet returnRecordSet(string sql)
{
connectionData();
ds = new DataSet();
adapter = new OracleDataAdapter(sql, connect);
adapter.Fill(ds);
closeConnect();
return ds;
}
/// <summary>
/// 返回查询记录数
/// </summary>
/// <returns>int</returns>
public int returnRecordCount(string sql)
{
int rowCount = 0;
connectionData();
command = new OracleCommand(sql, connect);
try
{
rowCount = command.ExecuteNonQuery();
}
catch
{
//throw;
}
closeConnect();
return rowCount;
}
/// <summary>
/// 返回第一行第一列的值
/// </summary>
/// <returns>int</returns>
public object returnRCValue(string sql)
{
object obj = null;
connectionData();
command = new OracleCommand(sql, connect);
try
{
obj = command.ExecuteScalar();
}
catch
{
//throw;
}
closeConnect();
return obj;
}
/// <summary>
/// sql形式 select COUNT(*) from 表
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public int callRecordCount(string sql)
{
object obj = null;
connectionData();
command = new OracleCommand(sql, connect);
try
{
obj = command.ExecuteScalar();
}
catch
{
//throw;
}
closeConnect();
return Convert.ToInt16(obj);
}
/// <summary>
/// 返回结果状态1为成功0为失败
/// </summary>
///<param name="myArr">存储SQL语句的集合</param>
/// <returns>int</returns>
public int ExucteTransaction(ArrayList myArr)
{
int returnValue = 0;
connectionData();
command = new OracleCommand();
command.Connection = connect;
OracleTransaction myTran = connect.BeginTransaction();
command.Transaction = myTran;
try
{
for (int i = 0; i < myArr.Count; i++)
{
command.CommandText = myArr.ToString();
command.ExecuteNonQuery();
}
myTran.Commit();
returnValue = 1;
}
catch
{
myTran.Rollback();
returnValue = 0;
}
finally
{
connect.Close();
}
return returnValue;
}
/// <summary>
/// 返回DataReader,非安全代码,必须手动关闭连接!
/// </summary>
/// <param name="sql">SQL查询语句</param>
/// <returns>SqlDataReader</returns>
public OracleDataReader retrunDataReader(string sql)
{
command = new OracleCommand(sql, connect);
try
{
reader = command.ExecuteReader();
}
catch
{
//throw;
}
return reader;
}
// 返回Command
public OracleCommand returnCommand(string sql, OracleParameter[] parms)
{
command = new OracleCommand(sql, connect);
foreach (OracleParameter parm in parms)
{
command.Parameters.Add(parm);
}
return command;
}
/// <summary>
/// 调用存储过程,非安全代码,必须手动关闭连接!
/// </summary>
/// <param name="proceName">存储过程名</param>
/// <param name="parms">存储过程参数</param>
/// <param name="sdr">返回SqlDataReader对象</param>
public void RunProce(string proceName, OracleParameter[] parms, out OracleDataReader sdr)
{
command = CreateCommand(proceName, parms);
sdr = command.ExecuteReader(CommandBehavior.CloseConnection);
}
/// <summary>
/// 调用存储过程,非安全代码,必须手动关闭连接!
/// </summary>
/// <param name="proceName"></param>
/// <param name="parms"></param>
/// <param name="result"></param>
public void RunProce(string proceName,OracleParameter[] parms, out int result)
{
command = CreateCommand(proceName, parms);
result = command.ExecuteNonQuery();
}

/// <summary>
/// 调用存储过程,非安全代码,必须手动关闭连接!
/// </summary>
/// <param name="proceName"></param>
/// <param name="parms"></param>
/// <param name="ds"></param>
public void RunProce(string proceName, OracleParameter[] parms, out DataSet ds)
{
command = CreateCommand(proceName, parms);
adapter = new OracleDataAdapter(command);
ds = new DataSet();
try
{
adapter.Fill(ds, "result");
}
catch (Exception e)
{
}
}
/// <summary>
/// 调用存储过程,返回多个游标
/// </summary>
/// <param name="proceName"></param>
/// <param name="parms"></param>
/// <param name="ds"></param>
public void RunMultiCurProce(string proceName, OracleParameter[] parms, out DataSet ds)
{
command = CreateCommand(proceName, parms);
adapter = new OracleDataAdapter(command);
ds = new DataSet();
try
{
adapter.Fill(ds);
}
catch (Exception e)
{
}
}
/// <summary>
/// 调用存储过程,非安全代码,必须手动关闭连接!
/// </summary>
/// <param name="proceName"></param>
/// <param name="parms"></param>
/// <param name="result"></param>
public void RunProce(string proceName, OracleParameter[] parms)
{
command = CreateCommand(proceName, parms);
command.CommandType = CommandType.StoredProcedure;
try
{
command.ExecuteNonQuery();
}
catch (Exception e)
{
Console.Write(e.Message);
}
}
/// <summary>
/// 调用存储过程,非安全代码,必须手动关闭连接!
/// </summary>
/// <param name="proceName"></param>
/// <param name="parms"></param>
/// <param name="ds"></param>
public void RunProce(string proceName, string tableName, OracleParameter[] parms, out DataSet ds)
{
command = CreateCommand(proceName, parms);
adapter = new OracleDataAdapter(command);
ds = new DataSet();
try
{
adapter.Fill(ds, tableName);
}
catch(Exception e)
{
};
}

/// <summary>
/// 创建SqlComand对象 执行存储过程
/// </summary>
/// <param name="proceName">存储过程名</param>
/// <param name="parms">存储过程参数</param>
/// <returns>返回SqlCommand对象</returns>
private OracleCommand CreateCommand(string proceName, OracleParameter[] parms)
{
command = new OracleCommand(proceName, connect);
command.CommandType = CommandType.StoredProcedure;
if (parms != null)
{
foreach (OracleParameter parm in parms)
{
command.Parameters.Add(parm);
}
}
return command;
}
/// <summary>
/// 初始化页面Table数据
/// </summary>
/// <param name="field"></param>
/// <param name="table"></param>
/// <param name="condition"></param>
public void getInitTable(string field, string table, string condition)
{
StringBuilder SQL = new StringBuilder();
SQL.Append("select " + field + " from " + table + " where " + condition);
retrunDataReader(SQL.ToString());
}

/// <summary>
/// 仅执行数据库操作
/// </summary>
/// <param name="sql"></param>
public void SqlOpt(string sql)
{
connectionData();
command = new OracleCommand(sql);
command.Connection = connect;
try
{
command.ExecuteNonQuery();
}
catch (OracleException se)
{
throw se;
}
finally
{
}
connect.Close();
}
}
}


调用存储过程:  

  public string GS_Info(string parm1, string parm2, string parm3)
{
OracleParameter[] parm = null;
parm = new OracleParameter[4] { new OracleParameter("parm1", OracleType.VarChar, 10),
new OracleParameter("parm2", OracleType.VarChar, 10),
new OracleParameter("parm3", OracleType.VarChar, 10),
new OracleParameter("Re_CURSOR", OracleType.Cursor, 100000) };
parm[0].Direction = System.Data.ParameterDirection.Input;
parm[1].Direction = ParameterDirection.Input;
parm[2].Direction = ParameterDirection.Input;
parm[3].Direction = ParameterDirection.Output;
parm[0].Value = parm1;
parm[1].Value = parm2;
parm[2].Value = parm3;
DataSet ds = null;
OracleServerDAL OSD = new OracleServerDAL();
string result = "";
try
{
OSD.connectionData();
OSD.RunProce("ProceName", "GS_Table", parm, out ds);
result = CommonFormOpt.SerializeDataTableXml(ds.Tables[0]);
}
catch (Exception)
{
}
finally
{
OSD.closeConnect();
}
return result;
}


要手动关闭连接。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-256242-1-1.html 上篇帖子: oracle 维护、监控、优化常用sql 下篇帖子: Oracle中的in和exsits的用法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表