博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#之使用单例模式实现数据库连接
阅读量:4668 次
发布时间:2019-06-09

本文共 1093 字,大约阅读时间需要 3 分钟。

1、使用程序集Oracle.ManagedDataAccess.dll

using Oracle.ManagedDataAccess.Client;

using System.Configuration;

namespace ClassLibrary1

{
///
/// 数据库连接练习单例模式
///
public class oracledbconect
{
private static OracleConnection con = null;
private static object obj = new object();
///
/// 定义公共静态属性instance,外部调用
///
public static OracleConnection instance
{
get
{
// 当第一个线程运行到这里时,此时会对locker对象 "加锁",
// 当第二个线程运行该方法时,首先检测到locker对象为"加锁"状态,该线程就会挂起等待第一个线程解锁
// lock语句运行完之后(即线程运行完之后)会对该对象"解锁"
// 双重锁定只需要一句判断就可以了
if (con==null)
{
lock (obj)
{
if (con==null)
{
var str = ConfigurationManager.ConnectionStrings["DBcontection"].ConnectionString;//获取配置文件中的数据库连接字符串
con = new OracleConnection(str);//实例化
try
{
con.Open();
}
catch (Exception e)
{
return null;
}
}
}
}
return con;
}
}

// 私有构造函数是一种特殊的实例构造函数。它通常用在只包含静态成员的类中。    // 如果类具有一个或多个私有构造函数而没有公共构造函数,则其他类(除嵌套类外)无法创建该类的实例。    //声明空构造函数可阻止自动生成默认构造函数,因为当编译器看到我们的类中没有定义构造函数时,编译器会帮我们生成一个公有的无参构造函数。    //注意,如果您不对构造函数使用访问修饰符,则在默认情况下它仍为私有构造函数。    // 但是,通常显式地使用 private 修饰符来清楚地表明该类不能被实例化。    private oracledbconect() { }}

}

转载于:https://www.cnblogs.com/MinLee/p/8384127.html

你可能感兴趣的文章
ansible-playbook && Roles && include
查看>>
String s String s=null和String s="a"区别
查看>>
[Alpha阶段]第二次Scrum Meeting
查看>>
关于Java 8 forEach
查看>>
.NET设计模式(1):1.1 单例模式(Singleton Pattern)
查看>>
创建模态对话框和非模态对话框
查看>>
08-图8 How Long Does It Take
查看>>
二维数组中最大连通子数组
查看>>
java 正则表达式-忽略大小写与多行匹配
查看>>
mac 上亚马逊密钥登录
查看>>
css选择器中:first-child与:first-of-type的区别
查看>>
nopcommerce 二次开发
查看>>
NHibernate入门实例
查看>>
IBM_DS5020磁盘阵列做raid、热备并把盘阵挂在服务器上的步骤
查看>>
svg制作风车旋转
查看>>
《软件工程》课堂作业:返回一个整数数组中最大字数组的和
查看>>
ACM 美素数 (没AC)
查看>>
Sqlserver学习研究
查看>>
VTK图形模型主要对象
查看>>
c# Linq实现 获得某一个路径下所有文件的名(不含扩展名)
查看>>