连接Oracle数据库的OracleHelper.cs

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

using
System;

using
System.Configuration;

using
System.Data;

using
System.Data.OracleClient;

using
System.Collections;

namespace
DBUtility {

    /// <summary>

    /// A helper class used to execute queries against an Oracle database

    /// </summary>

    public
abstract class OracleHelper {

        //Create a hashtable for the parameter cached

        private
static Hashtable parmCache = Hashtable.Synchronized(new
Hashtable());

        /// <summary>

        /// Execute a database query which does not include a select

        /// </summary>

        /// <param name="connString">Connection string to database</param>

        /// <param name="cmdType">Command type either stored procedure or SQL</param>

        /// <param name="cmdText">Acutall SQL Command</param>

        /// <param name="commandParameters">Parameters to bind to the command</param>

        /// <returns></returns>

        public
static int ExecuteNonQuery(string
connectionString, CommandType cmdType, string
cmdText, params
OracleParameter[] commandParameters) {

            // Create a new Oracle command

            OracleCommand cmd = new
OracleCommand();

            //Create a connection

            using
(OracleConnection connection = new
OracleConnection(connectionString)) {

                //Prepare the command

                PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);

                //Execute the command

                int
val = cmd.ExecuteNonQuery();

                cmd.Parameters.Clear();

                return
val;

            }

        }

        /// <summary>

        /// Execute an OracleCommand (that returns no resultset) against an existing database transaction

        /// using the provided parameters.

        /// </summary>

        /// <remarks>

        /// e.g.: 

        ///  int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "PublishOrders", new OracleParameter(":prodid", 24));

        /// </remarks>

        /// <param name="trans">an existing database transaction</param>

        /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>

        /// <param name="commandText">the stored procedure name or PL/SQL command</param>

        /// <param name="commandParameters">an array of OracleParamters used to execute the command</param>

        /// <returns>an int representing the number of rows affected by the command</returns>

        public
static int ExecuteNonQuery(OracleTransaction trans, CommandType cmdType, string
cmdText, params
OracleParameter[] commandParameters) {

            OracleCommand cmd = new
OracleCommand();

            PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);

            int
val = cmd.ExecuteNonQuery();

            cmd.Parameters.Clear();

            return
val;

        }

        /// <summary>

        /// Execute an OracleCommand (that returns no resultset) against an existing database connection

        /// using the provided parameters.

        /// </summary>

        /// <remarks>

        /// e.g.: 

        ///  int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new OracleParameter(":prodid", 24));

        /// </remarks>

        /// <param name="conn">an existing database connection</param>

        /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>

        /// <param name="commandText">the stored procedure name or PL/SQL command</param>

        /// <param name="commandParameters">an array of OracleParamters used to execute the command</param>

        /// <returns>an int representing the number of rows affected by the command</returns>

        public
static int ExecuteNonQuery(OracleConnection connection, CommandType cmdType, string
cmdText, params
OracleParameter[] commandParameters) {

            OracleCommand cmd = new
OracleCommand();

            PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);

            int
val = cmd.ExecuteNonQuery();

            cmd.Parameters.Clear();

            return
val;

        }

        /// <summary>

        /// Execute a select query that will return a result set

        /// </summary>

        /// <param name="connString">Connection string</param>

        //// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>

        /// <param name="commandText">the stored procedure name or PL/SQL command</param>

        /// <param name="commandParameters">an array of OracleParamters used to execute the command</param>

        /// <returns></returns>

        public
static OracleDataReader ExecuteReader(string
connectionString, CommandType cmdType, string
cmdText, params
OracleParameter[] commandParameters) {

            //Create the command and connection

            OracleCommand cmd = new
OracleCommand();

            OracleConnection conn = new
OracleConnection(connectionString);

            try
{

                //Prepare the command to execute

                PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);

                //Execute the query, stating that the connection should close when the resulting datareader has been read

                OracleDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

                cmd.Parameters.Clear();

                return
rdr;

            }

            catch
{

                //If an error occurs close the connection as the reader will not be used and we expect it to close the connection

                conn.Close();

                throw;

            }

        }

        /// <summary>

        /// Execute an OracleCommand that returns the first column of the first record against the database specified in the connection string

        /// using the provided parameters.

        /// </summary>

        /// <remarks>

        /// e.g.: 

        ///  Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new OracleParameter(":prodid", 24));

        /// </remarks>

        /// <param name="connectionString">a valid connection string for a SqlConnection</param>

        /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>

        /// <param name="commandText">the stored procedure name or PL/SQL command</param>

        /// <param name="commandParameters">an array of OracleParamters used to execute the command</param>

        /// <returns>An object that should be converted to the expected type using Convert.To{Type}</returns>

        public
static object ExecuteScalar(string
connectionString, CommandType cmdType, string
cmdText, params
OracleParameter[] commandParameters) {

            OracleCommand cmd = new
OracleCommand();

            using
(OracleConnection conn = new
OracleConnection(connectionString)) {

                PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);

                object
val = cmd.ExecuteScalar();

                cmd.Parameters.Clear();

                return
val;

            }

        }

        /// <summary>

        /// Execute a OracleCommand (that returns a 1x1 resultset)  against the specified SqlTransaction

        /// using the provided parameters.

        /// </summary>

        /// <param name="transaction">A   valid SqlTransaction</param>

        /// <param name="commandType">The CommandType (stored procedure, text, etc.)</param>

        /// <param name="commandText">The stored procedure name   or PL/SQL command</param>

        /// <param name="commandParameters">An array of   OracleParamters used to execute the command</param>

        /// <returns>An   object containing the value in the 1x1 resultset generated by the command</returns>

        public
static object ExecuteScalar(OracleTransaction transaction, CommandType commandType, string
commandText, params
OracleParameter[] commandParameters) {

            if(transaction == null)

                throw
new ArgumentNullException("transaction");

            if(transaction != null
&& transaction.Connection == null)

                throw
new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction");

            // Create a command and prepare it for execution

            OracleCommand cmd = new
OracleCommand();

            PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);

            // Execute the command & return the results

            object
retval = cmd.ExecuteScalar();

            // Detach the SqlParameters from the command object, so they can be used again

            cmd.Parameters.Clear();

            return
retval;

        }

        /// <summary>

        /// Execute an OracleCommand that returns the first column of the first record against an existing database connection

        /// using the provided parameters.

        /// </summary>

        /// <remarks>

        /// e.g.: 

        ///  Object obj = ExecuteScalar(conn, CommandType.StoredProcedure, "PublishOrders", new OracleParameter(":prodid", 24));

        /// </remarks>

        /// <param name="conn">an existing database connection</param>

        /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>

        /// <param name="commandText">the stored procedure name or PL/SQL command</param>

        /// <param name="commandParameters">an array of OracleParamters used to execute the command</param>

        /// <returns>An object that should be converted to the expected type using Convert.To{Type}</returns>

        public
static object ExecuteScalar(OracleConnection connectionString, CommandType cmdType, string
cmdText, params
OracleParameter[] commandParameters) {

            OracleCommand cmd = new
OracleCommand();

            PrepareCommand(cmd, connectionString, null, cmdType, cmdText, commandParameters);

            object
val = cmd.ExecuteScalar();

            cmd.Parameters.Clear();

            return
val;

        }

        /// <summary>

        /// Add a set of parameters to the cached

        /// </summary>

        /// <param name="cacheKey">Key value to look up the parameters</param>

        /// <param name="commandParameters">Actual parameters to cached</param>

        public
static void CacheParameters(string
cacheKey, params
OracleParameter[] commandParameters) {

            parmCache[cacheKey] = commandParameters;

        }

        /// <summary>

        /// Fetch parameters from the cache

        /// </summary>

        /// <param name="cacheKey">Key to look up the parameters</param>

        /// <returns></returns>

        public
static OracleParameter[] GetCachedParameters(string
cacheKey) {

            OracleParameter[] cachedParms = (OracleParameter[])parmCache[cacheKey];

            if
(cachedParms == null)

                return
null;

            // If the parameters are in the cache

            OracleParameter[] clonedParms = new
OracleParameter[cachedParms.Length];

            // return a copy of the parameters

            for
(int
i = 0, j = cachedParms.Length; i < j; i++)

                clonedParms[i] = (OracleParameter)((ICloneable)cachedParms[i]).Clone();

            return
clonedParms;

        }

        /// <summary>

        /// Internal function to prepare a command for execution by the database

        /// </summary>

        /// <param name="cmd">Existing command object</param>

        /// <param name="conn">Database connection object</param>

        /// <param name="trans">Optional transaction object</param>

        /// <param name="cmdType">Command type, e.g. stored procedure</param>

        /// <param name="cmdText">Command test</param>

        /// <param name="commandParameters">Parameters for the command</param>

        private
static void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, CommandType cmdType, string
cmdText, OracleParameter[] commandParameters) {

            //Open the connection if required

            if
(conn.State != ConnectionState.Open)

                conn.Open();

            //Set up the command

            cmd.Connection = conn;

            cmd.CommandText = cmdText;

            cmd.CommandType = cmdType;

            //Bind it to the transaction if it exists

            if
(trans != null)

                cmd.Transaction = trans;

            // Bind the parameters passed in

            if
(commandParameters != null) {

                foreach
(OracleParameter parm in
commandParameters)

                    cmd.Parameters.Add(parm);

            }

        }

        /// <summary>

        /// Converter to use boolean data type with Oracle

        /// </summary>

        /// <param name="value">Value to convert</param>

        /// <returns></returns>

        public
static string OraBit(bool
value) {

            if(value)

                return
"Y";

            else

                return
"N";

        }

        /// <summary>

        /// Converter to use boolean data type with Oracle

        /// </summary>

        /// <param name="value">Value to convert</param>

        /// <returns></returns>

        public
static bool OraBool(string
value) {

            if(value.Equals("Y"))

                return
true;

            else

                return
false;

        }

    }

}

连接Oracle数据库的OracleHelper.cs,布布扣,bubuko.com

时间: 2024-12-25 05:07:35

连接Oracle数据库的OracleHelper.cs的相关文章

JavaWeb连接oracle数据库

javaWEB项目与普通java项目在连接oracle数据库上似乎略有不同. 普通java项目直接将ojdbc.jar构建路径即可: 而javaweb项目却可能并不能运行,需要再设置一下: 项目名上右键点击→属性→Deployment Assembly→Add→java Build Path Entries →ojdbc.jar,最后确定,重新运行项目. package dal; import java.sql.Connection; import java.sql.DriverManager;

win7 64位系统 PB连接oracle数据库出现“oracle library oci.dll could not be loaded”问题的解决方法

今天与大家分享一个自己的学习笔记,希望能给遇到同样问题的人带来帮助. 不知道大家在win7 64位系统下用 PB连接oracle数据库时,是否遇到过“oracle library oci.dll could not be loaded”问题. 今天,在win7 64位系统下用 PB连接oracle数据库时,一直出现上述错误,在百度上找了很久,都没有找到一个完整的解决方案,咨询了很多人,(他们都说是我的PB和oracle没装好,但我装的时候没出现任何问题,一切都很顺利,而且PB和oracle都能正

PLSQL Develope连接oracle数据库配置

首先我们在讲PLSQL Develope连接oracle数据库配置之前,先讲下如果不用PLSQL Develope连接oracle数据库,那该怎么办,那就是在本机安装oracle数据库,不过这个对于配置渣的笔记本来说是个挑战,而且界面长时间不操作就会卡死,只能强制关闭,用起来非常不方便,如果笔记本配置高,且不想费力用PLSQL,那可以考虑直接安装oracle客户端. 下面我们来看看如何用PLSQ连接oracle. 1.自行百度下载plsql客户端,个人比较喜欢从CSDN上下载,你们随意.下载好后

如何用PL/SQL Developer连接Oracle数据库

之前因为项目的原因需要使用Oracle数据库,由于时间有限没办法从基础开始学习,而且oracle操作的命令界面又太不友好,于是就找到了PL/SQL Developer这个很好用的软件来间接使用数据库. 下面简单介绍一下如何用这个软件连接Oracle数据库. 第一步 安装Oracle Database和PL/SQL Developer 这一步网上有很多的教程就不详细介绍.Oracle可以直接到官网去下载,在安装中注意几个问题就行: 1.一定要记住自己全局数据库名字和口令,这个在后面连接的时候很重要

java连接oracle数据库的实现代码

package connectionOracleDatabase; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class ConnectionOracleDa

Java连接Oracle数据库

package com.db;              import java.sql.Connection;       import java.sql.DriverManager;       import java.sql.PreparedStatement;       import java.sql.ResultSet;              public class DBConnection {           // 连接Oracle数据库           public

连接Oracle数据库帮助类

连接Oracle数据库帮助类,就是把连接Oracle数据库的方法封装起来,只需要在其它页面调用就可,不需要重复写. import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import oracle.jdbc.driver.OracleDriver; /** * 数据库连接帮助类 * @author zql_pc * */ public class DbHelp { /* *

JDBC连接Oracle数据库

我记得大二的时候,我们上java课程,当时老师就说了JDBC这个东西,也没怎么好好学,直到现在,我也不直到JDBC是什么玩意,就知道这玩意可以从数据库提取数据,那么JDBC到底是什么呢? JDBC是Java DataBase Connectivity的缩写,含义意思是java数据库连接,不需要多解释了,我感觉! 那么我们如何去做这样子的一个连接呢?用过一次之后就会发现,其实很简单,记住几个步骤,还有就是导入必要的驱动包就可以了,下面是几个重要的步骤: 第一步,你的项目环境中必须要导入必要的数据库

使用ADO连接oracle数据库“未找到提供程序。该程序可能未正确安装”解决方案

问题描述:VS2010开发的C++程序,在一台Win7旗舰版的已安装Oracle客户端的PC上连接不上Oracle,提示"未找到提供程序.该程序可能未正确安装",其他语言编写的程序比如C#是可以成功连接Oracle的: 解决办法:首先是找谷歌度娘帮忙,找了几篇文章,都说是没有Oracle的Oledb驱动,去安装目录XXXX\bin下还真没找到OraOLEDB*.dll,然后按照文章帮助将OraOLEDB10.dll文件拷贝至有问题的Win7上,在DOS下开始注册,这时却提示"