using System; using System.Collections; using System.Data; using System.Data.OracleClient; using System.Text; using WX.CRM.Model; using WX.CRM.Model.EntitySync; namespace WX.CRM.DAL { public abstract class OracleHelper { //Read the connection strings from the configuration file //public static readonly string ConnectionStringLocalTransaction = ConfigurationManager.ConnectionStrings["AYCRMCONN"].ConnectionString; public static readonly string AYCRMConn = ConStringHelper.AYCRMConn; public static readonly string AYCRMConn2 = ConStringHelper.AYCRMConn2; public static readonly string YunCrmConn = ConStringHelper.YunCrmConn; public static readonly string TGConn = ConStringHelper.TGCrmConn; public static readonly string HGCrmConn = ConStringHelper.HGCrmConn; //public static readonly string QhCrmConn = ConStringHelper.QhCrmConn; //Create a hashtable for the parameter cached private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable()); /// /// Execute a database query which does not include a select /// /// Connection string to database /// Command type either stored procedure or SQL /// Acutall SQL Command /// Parameters to bind to the command /// 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)) { try { //Prepare the command PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); //Execute the command int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } finally { if (connection.State == ConnectionState.Open) connection.Close(); } } } /// /// dataTable批量导入数据 /// /// 连接字符串 /// 表名 /// dataTable数据源 public static void OracleBulkInsert(string connectionString, string tableName, DataTable dataTable) { if (dataTable.Rows.Count == 0) { return; } using (Oracle.DataAccess.Client.OracleBulkCopy oracleBulkCopy = new Oracle.DataAccess.Client.OracleBulkCopy(connectionString, Oracle.DataAccess.Client.OracleBulkCopyOptions.UseInternalTransaction)) { try { oracleBulkCopy.DestinationTableName = tableName; for (int i = 0; i < dataTable.Columns.Count; i++) { oracleBulkCopy.ColumnMappings.Add(dataTable.Columns[i].ColumnName, dataTable.Columns[i].ColumnName); } oracleBulkCopy.WriteToServer(dataTable); } finally { if (oracleBulkCopy.Connection.State == ConnectionState.Open) oracleBulkCopy.Connection.Close(); } } } /// /// dataTable批量导入数据 /// /// 传入操作对象 /// 数据库表名 /// 要导入的dataTable public static void OracleBulkInsert(Oracle.DataAccess.Client.OracleBulkCopy oracleBulkCopy, string tableName, DataTable dataTable) { if (dataTable.Rows.Count == 0) { return; } try { oracleBulkCopy.DestinationTableName = tableName; for (int i = 0; i < dataTable.Columns.Count; i++) { oracleBulkCopy.ColumnMappings.Add(dataTable.Columns[i].ColumnName, dataTable.Columns[i].ColumnName); } oracleBulkCopy.WriteToServer(dataTable); } finally { if (oracleBulkCopy.Connection.State == ConnectionState.Open) oracleBulkCopy.Connection.Close(); } } public static void ExecuteOracleTransaction() { OracleConnection conn = new OracleConnection(OracleHelper.AYCRMConn); if (conn.State == ConnectionState.Closed) conn.Open(); try { using (OracleTransaction trans = conn.BeginTransaction()) { String cmdText = @"MERGE INTO WSKUSER.SYNC_RECEIVE_SUCC A USING(SELECT :PKID PKID FROM DUAL) B ON(A.PKID = B.PKID) WHEN NOT MATCHED THEN INSERT (A.PKID, A.PICI, A.JSONTEXT, A.FILENAME, A.ISBATCH, A.CTIME, A.SENDTIME, A.BIDATATYPE, A.DEPTCODE, A.CANREPEATNUM) VALUES (:PKID, :PICI, :JSONTEXT, :FILENAME, :ISBATCH, :SENDTIME, :CTIME, :BIDATATYPE, :DEPTCODE, :CANREPEATNUM)"; SYNC_PUSH_SUCC info = new SYNC_PUSH_SUCC() { PKID = 59125259, PICI = 0, JSONTEXT = "{\"resid\":\"047012725787469725\",\"userid\":\"wm9jNKCAAAN64mDModNfWKOac_xjX5pg\",\"deptcode\":\"DNG8\"}", FILENAME = "23", ISBATCH = 1, CTIME = DateTime.Parse("2022-07-06 15:19:44"), SENDTIME = DateTime.Parse("2022-07-06 16:13:03"), BIDATATYPE = "Client_CloseOrder", DEPTCODE = "DNG8", CANREPEATNUM = 0 }; OracleParameter[] cmdParms = { new OracleParameter(){ ParameterName = ":PKID", OracleType = OracleType.Number, Value = info.PKID}, new OracleParameter(){ ParameterName = ":PICI", OracleType = OracleType.Number, Value = info.PICI}, new OracleParameter(){ ParameterName = ":JSONTEXT", OracleType = OracleType.Clob, Value = info.JSONTEXT }, new OracleParameter(){ ParameterName = ":FILENAME", OracleType = OracleType.VarChar, Value = info.FILENAME}, new OracleParameter(){ ParameterName = ":ISBATCH", OracleType = OracleType.Number, Value = info.ISBATCH}, new OracleParameter(){ ParameterName = ":CTIME", OracleType = OracleType.DateTime, Value = info.CTIME }, new OracleParameter(){ ParameterName = ":SENDTIME", OracleType = OracleType.DateTime, Value = info.SENDTIME}, new OracleParameter(){ ParameterName = ":BIDATATYPE", OracleType = OracleType.VarChar, Value = info.BIDATATYPE}, new OracleParameter(){ ParameterName = ":DEPTCODE", OracleType = OracleType.VarChar, Value = info.DEPTCODE }, new OracleParameter(){ ParameterName = ":CANREPEATNUM", OracleType = OracleType.Int32, Value = info.CANREPEATNUM}, }; ExecuteSqlCommand(conn, trans, cmdText, cmdParms); string strDelete = " delete from wskuser.sync_receive a where a.pkid='59125239' "; ExecuteSqlCommand(conn, trans, strDelete); trans.Commit(); } } catch (Exception ex) { } finally { conn.Close(); } } public static void InsertParame() { try { /* SYNC_RECEIVE info = new SYNC_RECEIVE() { PKID = 59125262, PICI=null, JSONTEXT= "{\"type\":20,\"data\":[{\"uid\":223078,\"cid\":7071,\"appid\":\"ww8aded0c13e305598\",\"appuserid\":\"songgg\",\"unionid\":\"\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":1001,\"deptcode\":\"QBJX\",\"type\":\"企业微信\"},{\"uid\":223231,\"cid\":7071,\"appid\":\"ww9c725b712bb08a23\",\"appuserid\":\"SongZhiPeng\",\"unionid\":\"\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":2200,\"deptcode\":\"QBJX\",\"type\":\"企业微信\"},{\"uid\":226509,\"cid\":7071,\"appid\":\"wweabc4c20eadfdf84\",\"appuserid\":\"songgg\",\"unionid\":\"\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":2200,\"deptcode\":\"QBJX\",\"type\":\"企业微信\"},{\"uid\":227635,\"cid\":7071,\"appid\":\"wwd4cd11d60db47118\",\"appuserid\":\"songgg\",\"unionid\":\"\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":2300,\"deptcode\":\"QBJX\",\"type\":\"企业微信\"},{\"uid\":363186,\"cid\":7071,\"appid\":\"ww94e35af67a976d23\",\"appuserid\":\"songgg\",\"unionid\":\"\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":0,\"deptcode\":null,\"type\":\"企业微信\"},{\"uid\":490773,\"cid\":7071,\"appid\":\"wwb9c94b6d51580360\",\"appuserid\":\"songgg\",\"unionid\":\"\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":0,\"deptcode\":null,\"type\":\"企业微信\"},{\"uid\":497131,\"cid\":7071,\"appid\":\"ww9c725b712bb08a23\",\"appuserid\":\"SongZhiPeng2\",\"unionid\":\"\",\"mobile\":\"18926152693\",\"resid\":\"415806728527919657\",\"ch\":2200,\"deptcode\":\"QBJX\",\"type\":\"企业微信\"},{\"uid\":500651,\"cid\":7071,\"appid\":\"ww9bff45564457b627\",\"appuserid\":\"SongZhiPeng\",\"unionid\":\"\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":2200,\"deptcode\":\"QBJX\",\"type\":\"企业微信\"},{\"uid\":2151858,\"cid\":7071,\"appid\":\"ww28c4af06a24f4ace\",\"appuserid\":\"220411-154707-46\",\"unionid\":\"\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":0,\"deptcode\":null,\"type\":\"企业微信\"},{\"uid\":3349350,\"cid\":7071,\"appid\":\"wwd4cd11d60db47118\",\"appuserid\":\"220620-202256-25\",\"unionid\":\"\",\"mobile\":\"\",\"resid\":\"415806728527919657\",\"ch\":0,\"deptcode\":null,\"type\":\"企业微信\"},{\"uid\":508768,\"cid\":7071,\"appid\":\"com.web\",\"appuserid\":\"415806728527919657\",\"unionid\":\"\",\"mobile\":\"18926152693\",\"resid\":\"415806728527919657\",\"ch\":0,\"deptcode\":null,\"type\":\"浏览器\"},{\"uid\":173785,\"cid\":7071,\"appid\":\"wx65343ff31edbd720\",\"appuserid\":\"oNHrvwzJ7YJrwM5wTMQVMpf7ZjI0\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":1000,\"deptcode\":\"QBJX\",\"type\":\"服务号\"},{\"uid\":176142,\"cid\":7071,\"appid\":\"wx355be7cad257a8c4\",\"appuserid\":\"obk3K1AyuM4mOGvhbRapOZ7NtKfk\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":0,\"deptcode\":null,\"type\":\"服务号\"},{\"uid\":185983,\"cid\":7071,\"appid\":\"wxd824da5e2059804d\",\"appuserid\":\"oxae_uLahz59uDYRLwYuu6Y13L0Q\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":0,\"deptcode\":null,\"type\":\"服务号\"},{\"uid\":340897,\"cid\":7071,\"appid\":\"wxd824da5e2059804d\",\"appuserid\":\"oxae_uEfET9dcVvzP6JAlQNJ7TBI\",\"unionid\":\"o5bj2waCxr5YYk5BTe-IvfqFSe_E\",\"mobile\":\"\",\"resid\":null,\"ch\":0,\"deptcode\":null,\"type\":\"服务号\"},{\"uid\":351918,\"cid\":7071,\"appid\":\"wx9b0b7cb5a0ee6b2f\",\"appuserid\":\"oC6DDwvwrOqOPBC8Sn0DcC174rm4\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":0,\"deptcode\":null,\"type\":\"服务号\"},{\"uid\":355122,\"cid\":7071,\"appid\":\"wx9b0b7cb5a0ee6b2f\",\"appuserid\":\"oC6DDwtdTQIrDIE_6S74-wB5o34k\",\"unionid\":\"o5bj2waCxr5YYk5BTe-IvfqFSe_E\",\"mobile\":\"18926152693\",\"resid\":\"415806728527919657\",\"ch\":2200,\"deptcode\":\"QBJX\",\"type\":\"服务号\"},{\"uid\":553205,\"cid\":7071,\"appid\":\"wx9b0b7cb5a0ee6b2f\",\"appuserid\":\"oC6DDwpdSkiMWuL-VMN41mFB7g2c\",\"unionid\":\"o5bj2wU5snrPcECUvtMABjb4HUlU\",\"mobile\":\"18926152693\",\"resid\":\"415806728527919657\",\"ch\":2300,\"deptcode\":\"QBJX\",\"type\":\"服务号\"},{\"uid\":751885,\"cid\":7071,\"appid\":\"wx31a652de45126ceb\",\"appuserid\":\"oe8ohwRf6W-1sF-kQEqsp1mhEqcE\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":0,\"deptcode\":null,\"type\":\"服务号\"},{\"uid\":751894,\"cid\":7071,\"appid\":\"wx31a652de45126ceb\",\"appuserid\":\"oe8ohwYVxfL-EnmDkD2u-DLf9FdM\",\"unionid\":\"o5bj2waCxr5YYk5BTe-IvfqFSe_E\",\"mobile\":\"\",\"resid\":null,\"ch\":0,\"deptcode\":null,\"type\":\"服务号\"},{\"uid\":1197373,\"cid\":7071,\"appid\":\"wx258d09d55d9e78b0\",\"appuserid\":\"otkh854jqkxllQJkGbeRSjm3_2j4\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":0,\"deptcode\":null,\"type\":\"服务号\"},{\"uid\":3107553,\"cid\":7071,\"appid\":\"wx1d0e531a680d947b\",\"appuserid\":\"olxOo6O2FMj5qP9SVD3wAD1h9p4c\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":\"\",\"ch\":0,\"deptcode\":null,\"type\":\"服务号\"},{\"uid\":3537573,\"cid\":7071,\"appid\":\"wx6ec1576e35d9b83c\",\"appuserid\":\"oEIA7xGbZrN_RNV_ueulrAABwsQA\",\"unionid\":\"o5bj2waCxr5YYk5BTe-IvfqFSe_E\",\"mobile\":\"\",\"resid\":\"\",\"ch\":0,\"deptcode\":null,\"type\":\"服务号\"},{\"uid\":785846,\"cid\":7071,\"appid\":\"wxae75f21257c5a58e\",\"appuserid\":\"o924L408hpO6MgPTo-5vph5W-oEY\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":2300,\"deptcode\":\"QBJX\",\"type\":\"小程序\"},{\"uid\":1223207,\"cid\":7071,\"appid\":\"wxf5a5d1b630c7fb0c\",\"appuserid\":\"oD5wn5RChW-XmnbVICVleKsHN9T4\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":0,\"deptcode\":null,\"type\":\"小程序\"},{\"uid\":1373959,\"cid\":7071,\"appid\":\"wx638da3adf79dcab9\",\"appuserid\":\"oajmh4ivMXdJpvV8U5t84hjMMpj8\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":0,\"deptcode\":null,\"type\":\"小程序\"},{\"uid\":2215353,\"cid\":7071,\"appid\":\"wx25a6209d82179a4c\",\"appuserid\":\"oFEEC47QrLe-jOM7oML5nd_x4oRQ\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":0,\"deptcode\":null,\"type\":\"小程序\"},{\"uid\":2276733,\"cid\":7071,\"appid\":\"wx3ba7e0076cc52130\",\"appuserid\":\"ojOmR5TIcvOdciN_uZbwogdLYh3g\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":0,\"deptcode\":null,\"type\":\"小程序\"},{\"uid\":230701,\"cid\":7071,\"appid\":\"ww9c725b712bb08a23_1\",\"appuserid\":\"wm3uf_DAAAy61LlydoVZWRTTca3oeSaA\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":2200,\"deptcode\":\"QBJX\",\"type\":\"企业微信外部联系人\"},{\"uid\":234591,\"cid\":7071,\"appid\":\"ww9c725b712bb08a23_1\",\"appuserid\":\"wm3uf_DAAA3LQxxLk013SYHYN4ZHekGw\",\"unionid\":\"o5bj2wU5snrPcECUvtMABjb4HUlU\",\"mobile\":\"\",\"resid\":null,\"ch\":2200,\"deptcode\":\"QBJX\",\"type\":\"企业微信外部联系人\"},{\"uid\":237892,\"cid\":7071,\"appid\":\"ww8aded0c13e305598_1\",\"appuserid\":\"wmZFg0DwAAZIEq0lcMs-kBhu37g0sQ3g\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":1001,\"deptcode\":\"QBJX\",\"type\":\"企业微信外部联系人\"},{\"uid\":378318,\"cid\":7071,\"appid\":\"wweabc4c20eadfdf84_1\",\"appuserid\":\"wmXmZYDAAAhbb5AT2A4MOpagVXQ-y-rQ\",\"unionid\":\"o5bj2waCxr5YYk5BTe-IvfqFSe_E\",\"mobile\":\"\",\"resid\":null,\"ch\":2200,\"deptcode\":\"QBJX\",\"type\":\"企业微信外部联系人\"},{\"uid\":737668,\"cid\":7071,\"appid\":\"ww89347c2378b6e050_1\",\"appuserid\":\"wm9jNKCAAA0-7MqH8ZOGzIUnHFbShfNg\",\"unionid\":\"o5bj2waCxr5YYk5BTe-IvfqFSe_E\",\"mobile\":\"\",\"resid\":null,\"ch\":2300,\"deptcode\":\"QBJX\",\"type\":\"企业微信外部联系人\"},{\"uid\":3482412,\"cid\":7071,\"appid\":\"ww2cdef17101a6aef6_1\",\"appuserid\":\"wmO758CQAAYXKW3IxIBJzhx5Nvh9R_jw\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":\"\",\"ch\":0,\"deptcode\":null,\"type\":\"企业微信外部联系人\"},{\"uid\":7071,\"cid\":7071,\"appid\":\"com.dongniu\",\"appuserid\":\"ebdl1001\",\"unionid\":\"o5bj2waCxr5YYk5BTe-IvfqFSe_E\",\"mobile\":\"18926152693\",\"resid\":\"415806728527919657\",\"ch\":1000,\"deptcode\":\"QBJX\",\"type\":\"PC软件\"},{\"uid\":9075,\"cid\":7071,\"appid\":\"com.dongniu\",\"appuserid\":\"aaazzz888\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":1000,\"deptcode\":\"QBJX\",\"type\":\"PC软件\"}]}", FILENAME=null, ISBATCH=0, CTIME=DateTime.Now, BIDATATYPE= "Client_CloseOrder", DEPTCODE= "DNG8", CANREPEATNUM=null };*/ SYNC_RECEIVE info = new SYNC_RECEIVE() { PKID = 59125177, PICI = null, JSONTEXT = "{\"type\":20,\"data\":[{\"uid\":223078,\"cid\":7071,\"appid\":\"ww8aded0c13e305598\",\"appuserid\":\"songgg\",\"unionid\":\"\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":1001,\"deptcode\":\"QBJX\",\"type\":\"企业微信\"},{\"uid\":223231,\"cid\":7071,\"appid\":\"ww9c725b712bb08a23\",\"appuserid\":\"SongZhiPeng\",\"unionid\":\"\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":2200,\"deptcode\":\"QBJX\",\"type\":\"企业微信\"},{\"uid\":226509,\"cid\":7071,\"appid\":\"wweabc4c20eadfdf84\",\"appuserid\":\"songgg\",\"unionid\":\"\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":2200,\"deptcode\":\"QBJX\",\"type\":\"企业微信\"},{\"uid\":227635,\"cid\":7071,\"appid\":\"wwd4cd11d60db47118\",\"appuserid\":\"songgg\",\"unionid\":\"\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":2300,\"deptcode\":\"QBJX\",\"type\":\"企业微信\"},{\"uid\":363186,\"cid\":7071,\"appid\":\"ww94e35af67a976d23\",\"appuserid\":\"songgg\",\"unionid\":\"\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":0,\"deptcode\":null,\"type\":\"企业微信\"},{\"uid\":490773,\"cid\":7071,\"appid\":\"wwb9c94b6d51580360\",\"appuserid\":\"songgg\",\"unionid\":\"\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":0,\"deptcode\":null,\"type\":\"企业微信\"},{\"uid\":497131,\"cid\":7071,\"appid\":\"ww9c725b712bb08a23\",\"appuserid\":\"SongZhiPeng2\",\"unionid\":\"\",\"mobile\":\"18926152693\",\"resid\":\"415806728527919657\",\"ch\":2200,\"deptcode\":\"QBJX\",\"type\":\"企业微信\"},{\"uid\":500651,\"cid\":7071,\"appid\":\"ww9bff45564457b627\",\"appuserid\":\"SongZhiPeng\",\"unionid\":\"\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":2200,\"deptcode\":\"QBJX\",\"type\":\"企业微信\"},{\"uid\":2151858,\"cid\":7071,\"appid\":\"ww28c4af06a24f4ace\",\"appuserid\":\"220411-154707-46\",\"unionid\":\"\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":0,\"deptcode\":null,\"type\":\"企业微信\"},{\"uid\":3349350,\"cid\":7071,\"appid\":\"wwd4cd11d60db47118\",\"appuserid\":\"220620-202256-25\",\"unionid\":\"\",\"mobile\":\"\",\"resid\":\"415806728527919657\",\"ch\":0,\"deptcode\":null,\"type\":\"企业微信\"},{\"uid\":508768,\"cid\":7071,\"appid\":\"com.web\",\"appuserid\":\"415806728527919657\",\"unionid\":\"\",\"mobile\":\"18926152693\",\"resid\":\"415806728527919657\",\"ch\":0,\"deptcode\":null,\"type\":\"浏览器\"},{\"uid\":173785,\"cid\":7071,\"appid\":\"wx65343ff31edbd720\",\"appuserid\":\"oNHrvwzJ7YJrwM5wTMQVMpf7ZjI0\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":1000,\"deptcode\":\"QBJX\",\"type\":\"服务号\"},{\"uid\":176142,\"cid\":7071,\"appid\":\"wx355be7cad257a8c4\",\"appuserid\":\"obk3K1AyuM4mOGvhbRapOZ7NtKfk\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":0,\"deptcode\":null,\"type\":\"服务号\"},{\"uid\":185983,\"cid\":7071,\"appid\":\"wxd824da5e2059804d\",\"appuserid\":\"oxae_uLahz59uDYRLwYuu6Y13L0Q\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":0,\"deptcode\":null,\"type\":\"服务号\"},{\"uid\":340897,\"cid\":7071,\"appid\":\"wxd824da5e2059804d\",\"appuserid\":\"oxae_uEfET9dcVvzP6JAlQNJ7TBI\",\"unionid\":\"o5bj2waCxr5YYk5BTe-IvfqFSe_E\",\"mobile\":\"\",\"resid\":null,\"ch\":0,\"deptcode\":null,\"type\":\"服务号\"},{\"uid\":351918,\"cid\":7071,\"appid\":\"wx9b0b7cb5a0ee6b2f\",\"appuserid\":\"oC6DDwvwrOqOPBC8Sn0DcC174rm4\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":0,\"deptcode\":null,\"type\":\"服务号\"},{\"uid\":355122,\"cid\":7071,\"appid\":\"wx9b0b7cb5a0ee6b2f\",\"appuserid\":\"oC6DDwtdTQIrDIE_6S74-wB5o34k\",\"unionid\":\"o5bj2waCxr5YYk5BTe-IvfqFSe_E\",\"mobile\":\"18926152693\",\"resid\":\"415806728527919657\",\"ch\":2200,\"deptcode\":\"QBJX\",\"type\":\"服务号\"},{\"uid\":553205,\"cid\":7071,\"appid\":\"wx9b0b7cb5a0ee6b2f\",\"appuserid\":\"oC6DDwpdSkiMWuL-VMN41mFB7g2c\",\"unionid\":\"o5bj2wU5snrPcECUvtMABjb4HUlU\",\"mobile\":\"18926152693\",\"resid\":\"415806728527919657\",\"ch\":2300,\"deptcode\":\"QBJX\",\"type\":\"服务号\"},{\"uid\":751885,\"cid\":7071,\"appid\":\"wx31a652de45126ceb\",\"appuserid\":\"oe8ohwRf6W-1sF-kQEqsp1mhEqcE\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":0,\"deptcode\":null,\"type\":\"服务号\"},{\"uid\":751894,\"cid\":7071,\"appid\":\"wx31a652de45126ceb\",\"appuserid\":\"oe8ohwYVxfL-EnmDkD2u-DLf9FdM\",\"unionid\":\"o5bj2waCxr5YYk5BTe-IvfqFSe_E\",\"mobile\":\"\",\"resid\":null,\"ch\":0,\"deptcode\":null,\"type\":\"服务号\"},{\"uid\":1197373,\"cid\":7071,\"appid\":\"wx258d09d55d9e78b0\",\"appuserid\":\"otkh854jqkxllQJkGbeRSjm3_2j4\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":0,\"deptcode\":null,\"type\":\"服务号\"},{\"uid\":3107553,\"cid\":7071,\"appid\":\"wx1d0e531a680d947b\",\"appuserid\":\"olxOo6O2FMj5qP9SVD3wAD1h9p4c\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":\"\",\"ch\":0,\"deptcode\":null,\"type\":\"服务号\"},{\"uid\":3537573,\"cid\":7071,\"appid\":\"wx6ec1576e35d9b83c\",\"appuserid\":\"oEIA7xGbZrN_RNV_ueulrAABwsQA\",\"unionid\":\"o5bj2waCxr5YYk5BTe-IvfqFSe_E\",\"mobile\":\"\",\"resid\":\"\",\"ch\":0,\"deptcode\":null,\"type\":\"服务号\"},{\"uid\":785846,\"cid\":7071,\"appid\":\"wxae75f21257c5a58e\",\"appuserid\":\"o924L408hpO6MgPTo-5vph5W-oEY\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":2300,\"deptcode\":\"QBJX\",\"type\":\"小程序\"},{\"uid\":1223207,\"cid\":7071,\"appid\":\"wxf5a5d1b630c7fb0c\",\"appuserid\":\"oD5wn5RChW-XmnbVICVleKsHN9T4\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":0,\"deptcode\":null,\"type\":\"小程序\"},{\"uid\":1373959,\"cid\":7071,\"appid\":\"wx638da3adf79dcab9\",\"appuserid\":\"oajmh4ivMXdJpvV8U5t84hjMMpj8\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":0,\"deptcode\":null,\"type\":\"小程序\"},{\"uid\":2215353,\"cid\":7071,\"appid\":\"wx25a6209d82179a4c\",\"appuserid\":\"oFEEC47QrLe-jOM7oML5nd_x4oRQ\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":0,\"deptcode\":null,\"type\":\"小程序\"},{\"uid\":2276733,\"cid\":7071,\"appid\":\"wx3ba7e0076cc52130\",\"appuserid\":\"ojOmR5TIcvOdciN_uZbwogdLYh3g\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":0,\"deptcode\":null,\"type\":\"小程序\"},{\"uid\":230701,\"cid\":7071,\"appid\":\"ww9c725b712bb08a23_1\",\"appuserid\":\"wm3uf_DAAAy61LlydoVZWRTTca3oeSaA\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":2200,\"deptcode\":\"QBJX\",\"type\":\"企业微信外部联系人\"},{\"uid\":234591,\"cid\":7071,\"appid\":\"ww9c725b712bb08a23_1\",\"appuserid\":\"wm3uf_DAAA3LQxxLk013SYHYN4ZHekGw\",\"unionid\":\"o5bj2wU5snrPcECUvtMABjb4HUlU\",\"mobile\":\"\",\"resid\":null,\"ch\":2200,\"deptcode\":\"QBJX\",\"type\":\"企业微信外部联系人\"},{\"uid\":237892,\"cid\":7071,\"appid\":\"ww8aded0c13e305598_1\",\"appuserid\":\"wmZFg0DwAAZIEq0lcMs-kBhu37g0sQ3g\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":null,\"ch\":1001,\"deptcode\":\"QBJX\",\"type\":\"企业微信外部联系人\"},{\"uid\":378318,\"cid\":7071,\"appid\":\"wweabc4c20eadfdf84_1\",\"appuserid\":\"wmXmZYDAAAhbb5AT2A4MOpagVXQ-y-rQ\",\"unionid\":\"o5bj2waCxr5YYk5BTe-IvfqFSe_E\",\"mobile\":\"\",\"resid\":null,\"ch\":2200,\"deptcode\":\"QBJX\",\"type\":\"企业微信外部联系人\"},{\"uid\":737668,\"cid\":7071,\"appid\":\"ww89347c2378b6e050_1\",\"appuserid\":\"wm9jNKCAAA0-7MqH8ZOGzIUnHFbShfNg\",\"unionid\":\"o5bj2waCxr5YYk5BTe-IvfqFSe_E\",\"mobile\":\"\",\"resid\":null,\"ch\":2300,\"deptcode\":\"QBJX\",\"type\":\"企业微信外部联系人\"},{\"uid\":3482412,\"cid\":7071,\"appid\":\"ww2cdef17101a6aef6_1\",\"appuserid\":\"wmO758CQAAYXKW3IxIBJzhx5Nvh9R_jw\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"\",\"resid\":\"\",\"ch\":0,\"deptcode\":null,\"type\":\"企业微信外部联系人\"},{\"uid\":7071,\"cid\":7071,\"appid\":\"com.dongniu\",\"appuserid\":\"ebdl1001\",\"unionid\":\"o5bj2waCxr5YYk5BTe-IvfqFSe_E\",\"mobile\":\"18926152693\",\"resid\":\"415806728527919657\",\"ch\":1000,\"deptcode\":\"QBJX\",\"type\":\"PC软件\"},{\"uid\":9075,\"cid\":7071,\"appid\":\"com.dongniu\",\"appuserid\":\"aaazzz888\",\"unionid\":\"o5bj2wTwoWwqQ_YAhcHuZLPYfB8k\",\"mobile\":\"15219281918\",\"resid\":\"048534020218722595\",\"ch\":1000,\"deptcode\":\"QBJX\",\"type\":\"PC软件\"}]}", FILENAME = null, ISBATCH = 1, CTIME = DateTime.Parse("2022-07-06 15:19:44"), BIDATATYPE = "Client_CloseOrder", DEPTCODE = "DNG8", CANREPEATNUM = null }; using (OracleConnection conn = new OracleConnection(AYCRMConn)) { String strSql = @"MERGE INTO WSKUSER.SYNC_RECEIVE A USING(SELECT :PKID PKID FROM DUAL) B ON(A.PKID = B.PKID) WHEN NOT MATCHED THEN INSERT (A.PKID, A.PICI, A.JSONTEXT, A.FILENAME, A.ISBATCH, A.CTIME, A.BIDATATYPE, A.DEPTCODE, A.CANREPEATNUM) VALUES (:PKID, :PICI, :JSONTEXT, :FILENAME, :ISBATCH, TO_DATE(:CTIME, 'YYYY-MM-DD HH24:MI:SS'), :BIDATATYPE, :DEPTCODE, :CANREPEATNUM)"; OracleCommand mycmd = new OracleCommand(strSql); conn.Open(); mycmd.Connection = conn; OracleParameter paPkid = new OracleParameter(":PKID", Oracle.DataAccess.Client.OracleDbType.Long); paPkid.Value = info.PKID; OracleParameter paPici = new OracleParameter(":PICI", Oracle.DataAccess.Client.OracleDbType.Long); paPici.Value = info.PICI; if (info.PICI == null) { paPici.Value = DBNull.Value; } OracleParameter paJsonText = new OracleParameter(":JSONTEXT", Oracle.DataAccess.Client.OracleDbType.Clob); paJsonText.Value = string.IsNullOrEmpty(info.JSONTEXT) ? "" : info.JSONTEXT; OracleParameter paFileName = new OracleParameter(":FILENAME", Oracle.DataAccess.Client.OracleDbType.Varchar2); paFileName.Value = string.IsNullOrEmpty(info.FILENAME) ? "" : info.FILENAME; OracleParameter paIsBatch = new OracleParameter(":ISBATCH", Oracle.DataAccess.Client.OracleDbType.Long); paIsBatch.Value = info.ISBATCH; if (info.ISBATCH == null) { paIsBatch.Value = DBNull.Value; } OracleParameter paCtime = new OracleParameter(":CTIME", Oracle.DataAccess.Client.OracleDbType.Date); paCtime.Value = info.CTIME; OracleParameter paBiDataType = new OracleParameter(":BIDATATYPE", Oracle.DataAccess.Client.OracleDbType.Varchar2); paBiDataType.Value = string.IsNullOrEmpty(info.BIDATATYPE) ? "" : info.BIDATATYPE; OracleParameter paDeptCode = new OracleParameter(":DEPTCODE", Oracle.DataAccess.Client.OracleDbType.Varchar2); paDeptCode.Value = string.IsNullOrEmpty(info.DEPTCODE) ? "" : info.DEPTCODE; OracleParameter paCanrePentNum = new OracleParameter(":CANREPEATNUM", Oracle.DataAccess.Client.OracleDbType.Long); paCanrePentNum.Value = info.CANREPEATNUM; if (info.CANREPEATNUM == null) { paCanrePentNum.Value = DBNull.Value; } mycmd.Parameters.Add(paPkid); mycmd.Parameters.Add(paPici); mycmd.Parameters.Add(paJsonText); mycmd.Parameters.Add(paFileName); mycmd.Parameters.Add(paIsBatch); mycmd.Parameters.Add(paCtime); mycmd.Parameters.Add(paBiDataType); mycmd.Parameters.Add(paDeptCode); mycmd.Parameters.Add(paCanrePentNum); mycmd.ExecuteNonQuery(); conn.Close(); } } catch (Exception ex) { } } private static void ExecuteSqlCommand(OracleConnection conn, OracleTransaction trans, string cmdText, OracleParameter[] cmdParms = null) { OracleCommand mycmd = new OracleCommand(cmdText); mycmd.Connection = conn; if (trans != null) mycmd.Transaction = trans; if (cmdParms != null) { foreach (OracleParameter parameter in cmdParms) { if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null)) { parameter.Value = DBNull.Value; } mycmd.Parameters.Add(parameter); } } mycmd.ExecuteNonQuery(); } public static void InsertParameSucc() { try { SYNC_PUSH_SUCC info = new SYNC_PUSH_SUCC() { PKID = 80060938909898, PICI = 5, JSONTEXT = "{\"resid\":\"047012725787469725\",\"userid\":\"wm9jNKCAAAN64mDModNfWKOac_xjX5pg\",\"deptcode\":\"DNG8\"}", FILENAME = null, ISBATCH = 1, CTIME = DateTime.Parse("2022-07-06 15:19:44"), SENDTIME = DateTime.Parse("2022 - 07 - 06 16:13:03"), BIDATATYPE = "Client_CloseOrder", DEPTCODE = "DNG8", CANREPEATNUM = null }; using (OracleConnection conn = new OracleConnection(AYCRMConn)) { String strSql = @"MERGE INTO WSKUSER.SYNC_RECEIVE_SUCC A USING(SELECT :PKID PKID FROM DUAL) B ON(A.PKID = B.PKID) WHEN NOT MATCHED THEN INSERT (A.PKID, A.PICI, A.JSONTEXT, A.FILENAME, A.ISBATCH, A.CTIME, A.SENDTIME, A.BIDATATYPE, A.DEPTCODE, A.CANREPEATNUM) VALUES (:PKID, :PICI, :JSONTEXT, :FILENAME, :ISBATCH, :SENDTIME, TO_DATE(:CTIME, 'YYYY-MM-DD HH24:MI:SS'), :BIDATATYPE, :DEPTCODE, :CANREPEATNUM)"; OracleCommand mycmd = new OracleCommand(strSql); conn.Open(); mycmd.Connection = conn; OracleParameter paPkid = new OracleParameter(":PKID", Oracle.DataAccess.Client.OracleDbType.Long); /* paPkid.Value = info.PKID; OracleParameter paPici = new OracleParameter(":PICI", Oracle.DataAccess.Client.OracleDbType.Long); paPici.Value = info.PICI; if (info.PICI == null) { paPici.Value = DBNull.Value; } OracleParameter paJsonText = new OracleParameter(":JSONTEXT", Oracle.DataAccess.Client.OracleDbType.Clob); paJsonText.Value = string.IsNullOrEmpty(info.JSONTEXT) ? "" : info.JSONTEXT; OracleParameter paFileName = new OracleParameter(":FILENAME", Oracle.DataAccess.Client.OracleDbType.Varchar2); paFileName.Value = string.IsNullOrEmpty(info.FILENAME) ? "" : info.FILENAME; OracleParameter paIsBatch = new OracleParameter(":ISBATCH", Oracle.DataAccess.Client.OracleDbType.Long); paIsBatch.Value = info.ISBATCH; if (info.ISBATCH == null) { paIsBatch.Value = DBNull.Value; } OracleParameter paCtime = new OracleParameter(":CTIME", Oracle.DataAccess.Client.OracleDbType.Date); paCtime.Value = info.CTIME; OracleParameter paSEndTime = new OracleParameter(":SENDTIME", Oracle.DataAccess.Client.OracleDbType.Date); paSEndTime.Value = info.SENDTIME; OracleParameter paBiDataType = new OracleParameter(":BIDATATYPE", Oracle.DataAccess.Client.OracleDbType.Varchar2); paBiDataType.Value = string.IsNullOrEmpty(info.BIDATATYPE) ? "" : info.BIDATATYPE; OracleParameter paDeptCode = new OracleParameter(":DEPTCODE", Oracle.DataAccess.Client.OracleDbType.Varchar2); paDeptCode.Value = string.IsNullOrEmpty(info.DEPTCODE) ? "" : info.DEPTCODE; OracleParameter paCanrePentNum = new OracleParameter(":CANREPEATNUM", Oracle.DataAccess.Client.OracleDbType.Long); paCanrePentNum.Value = info.CANREPEATNUM; if (info.CANREPEATNUM == null) { paCanrePentNum.Value = DBNull.Value; }*/ paPkid.Value = info.PKID; OracleParameter paPici = new OracleParameter(":PICI", Oracle.DataAccess.Client.OracleDbType.Long); paPici.Value = info.PICI; OracleParameter paJsonText = new OracleParameter(":JSONTEXT", Oracle.DataAccess.Client.OracleDbType.Clob); paJsonText.Value = info.JSONTEXT; OracleParameter paFileName = new OracleParameter(":FILENAME", Oracle.DataAccess.Client.OracleDbType.Varchar2); paFileName.Value = info.FILENAME; OracleParameter paIsBatch = new OracleParameter(":ISBATCH", Oracle.DataAccess.Client.OracleDbType.Long); paIsBatch.Value = info.ISBATCH; OracleParameter paCtime = new OracleParameter(":CTIME", Oracle.DataAccess.Client.OracleDbType.Date); paCtime.Value = info.CTIME; OracleParameter paSEndTime = new OracleParameter(":SENDTIME", Oracle.DataAccess.Client.OracleDbType.Date); paSEndTime.Value = info.SENDTIME; OracleParameter paBiDataType = new OracleParameter(":BIDATATYPE", Oracle.DataAccess.Client.OracleDbType.Varchar2); paBiDataType.Value = info.BIDATATYPE; OracleParameter paDeptCode = new OracleParameter(":DEPTCODE", Oracle.DataAccess.Client.OracleDbType.Varchar2); paDeptCode.Value = info.DEPTCODE; OracleParameter paCanrePentNum = new OracleParameter(":CANREPEATNUM", Oracle.DataAccess.Client.OracleDbType.Long); paCanrePentNum.Value = info.CANREPEATNUM; mycmd.Parameters.Add(paPkid); mycmd.Parameters.Add(paPici); mycmd.Parameters.Add(paJsonText); mycmd.Parameters.Add(paFileName); mycmd.Parameters.Add(paIsBatch); mycmd.Parameters.Add(paCtime); mycmd.Parameters.Add(paSEndTime); mycmd.Parameters.Add(paBiDataType); mycmd.Parameters.Add(paDeptCode); mycmd.Parameters.Add(paCanrePentNum); if (mycmd.Parameters != null) { foreach (OracleParameter parameter in mycmd.Parameters) { if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null)) { parameter.Value = DBNull.Value; } } } mycmd.ExecuteNonQuery(); conn.Close(); } } catch (Exception ex) { } } /// /// dataTable批量导入数据(连接字符串默认为AYCRMConn) /// /// 表名 /// dataTable数据源 public static void OracleBulkInsert(string tableName, DataTable dataTable) { OracleBulkInsert(AYCRMConn, tableName, dataTable); } /// /// 默认的连接串为AYCRMConn /// /// /// /// /// public static int ExecuteNonQuery(CommandType cmdType, string cmdText, params OracleParameter[] commandParameters) { return ExecuteNonQuery(AYCRMConn, cmdType, cmdText, commandParameters); } /// /// Execute an OracleCommand (that returns no resultset) against an existing database transaction /// using the provided parameters. /// /// /// e.g.: /// int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "PublishOrders", new OracleParameter(":prodid", 24)); /// /// an existing database transaction /// the CommandType (stored procedure, text, etc.) /// the stored procedure name or PL/SQL command /// an array of OracleParamters used to execute the command /// an int representing the number of rows affected by the command 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; } /// /// Execute an OracleCommand (that returns no resultset) against an existing database connection /// using the provided parameters. /// /// /// e.g.: /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new OracleParameter(":prodid", 24)); /// /// an existing database connection /// the CommandType (stored procedure, text, etc.) /// the stored procedure name or PL/SQL command /// an array of OracleParamters used to execute the command /// an int representing the number of rows affected by the command public static int ExecuteNonQuery(OracleConnection connection, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters) { try { OracleCommand cmd = new OracleCommand(); PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } finally { if (connection.State == ConnectionState.Open) connection.Close(); } } /// /// 返回一个dataset /// /// /// /// /// /// public static DataSet DataQueray(string connectionstring, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters) { OracleConnection con = new OracleConnection(connectionstring); OracleCommand cmd = new OracleCommand(cmdText, con); try { cmd.CommandType = cmdType; cmd.Parameters.AddRange(commandParameters); OracleDataAdapter da = new OracleDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); cmd.Parameters.Clear(); return ds; } finally { if (con.State == ConnectionState.Open) con.Close(); } } public static DataSet GetPageList(string connectionstring, CommandType cmdType, string cmdText, string orderField, string orderType, int pageIndex, int pageSize, ref int count, params OracleParameter[] commandParameters) { StringBuilder builder = new StringBuilder(); OracleConnection con = new OracleConnection(connectionstring); try { string sqlcount = "Select Count(1) From (" + cmdText + ") t"; count = Convert.ToInt32(ExecuteScalar(connectionstring, CommandType.Text, sqlcount, commandParameters)); int num = (pageIndex - 1) * pageSize; int num2 = pageSize; int num3 = num + num2 + 1; builder.Append("select * from(select t.*,rownum rn from(" + cmdText + " order by " + orderField + " " + orderType + ") t where rownum<" + num3 + ") where rn>" + num + ""); OracleCommand cmd = new OracleCommand(builder.ToString(), con); cmd.CommandType = cmdType; cmd.Parameters.AddRange(commandParameters); OracleDataAdapter da = new OracleDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); cmd.Parameters.Clear(); return ds; } catch { throw; } finally { if (con.State == ConnectionState.Open) con.Close(); } } public static DataSet DataQueray(OracleTransaction transaction, CommandType cmdType, string cmdText, 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"); OracleCommand cmd = new OracleCommand(); PrepareCommand(cmd, transaction.Connection, transaction, cmdType, cmdText, commandParameters); using (OracleDataAdapter da = new OracleDataAdapter(cmd)) { DataSet ds = new DataSet(); da.Fill(ds); cmd.Parameters.Clear(); return ds; } //OracleConnection con = new OracleConnection(connectionstring); //OracleCommand cmd = new OracleCommand(cmdText, con); //try //{ // cmd.CommandType = cmdType; // cmd.Parameters.AddRange(commandParameters); // OracleDataAdapter da = new OracleDataAdapter(cmd); // DataSet ds = new DataSet(); // da.Fill(ds); // cmd.Parameters.Clear(); // return ds; //} //catch //{ // con.Close(); // throw; //} } /// /// 默认的连接串为AYCRMConn /// /// /// /// /// public static DataSet DataQueray(CommandType cmdType, string cmdText, params OracleParameter[] commandParameters) { return DataQueray(AYCRMConn, cmdType, cmdText, commandParameters); } /// /// Execute a select query that will return a result set /// /// Connection string /// the CommandType (stored procedure, text, etc.) /// the stored procedure name or PL/SQL command /// an array of OracleParamters used to execute the command /// 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; } finally { conn.Close(); } } /// /// 默认的连接串为AYCRMConn /// /// /// /// /// public static OracleDataReader ExecuteReader(CommandType cmdType, string cmdText, params OracleParameter[] commandParameters) { return ExecuteReader(AYCRMConn, cmdType, cmdText, commandParameters); } /// /// Execute an OracleCommand that returns the first column of the first record against the database specified in the connection string /// using the provided parameters. /// /// /// e.g.: /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new OracleParameter(":prodid", 24)); /// /// a valid connection string for a SqlConnection /// the CommandType (stored procedure, text, etc.) /// the stored procedure name or PL/SQL command /// an array of OracleParamters used to execute the command /// An object that should be converted to the expected type using Convert.To{Type} public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters) { OracleCommand cmd = new OracleCommand(); using (OracleConnection conn = new OracleConnection(connectionString)) { try { PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); object val = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return val; } finally { conn.Close(); } } } /// /// 默认的连接串为AYCRMConn /// /// /// /// /// public static object ExecuteScalar(CommandType cmdType, string cmdText, params OracleParameter[] commandParameters) { return ExecuteScalar(AYCRMConn, cmdType, cmdText, commandParameters); } /// /// Execute a OracleCommand (that returns a 1x1 resultset) against the specified SqlTransaction /// using the provided parameters. /// /// A valid SqlTransaction /// The CommandType (stored procedure, text, etc.) /// The stored procedure name or PL/SQL command /// An array of OracleParamters used to execute the command /// An object containing the value in the 1x1 resultset generated by the command 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; } /// /// Execute an OracleCommand that returns the first column of the first record against an existing database connection /// using the provided parameters. /// /// /// e.g.: /// Object obj = ExecuteScalar(conn, CommandType.StoredProcedure, "PublishOrders", new OracleParameter(":prodid", 24)); /// /// an existing database connection /// the CommandType (stored procedure, text, etc.) /// the stored procedure name or PL/SQL command /// an array of OracleParamters used to execute the command /// An object that should be converted to the expected type using Convert.To{Type} public static object ExecuteScalar(OracleConnection connectionString, CommandType cmdType, string cmdText, params OracleParameter[] commandParameters) { try { OracleCommand cmd = new OracleCommand(); PrepareCommand(cmd, connectionString, null, cmdType, cmdText, commandParameters); object val = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return val; } finally { connectionString.Close(); } } /// /// Add a set of parameters to the cached /// /// Key value to look up the parameters /// Actual parameters to cached public static void CacheParameters(string cacheKey, params OracleParameter[] commandParameters) { parmCache[cacheKey] = commandParameters; } /// /// Fetch parameters from the cache /// /// Key to look up the parameters /// 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; } /// /// Internal function to prepare a command for execution by the database /// /// Existing command object /// Database connection object /// Optional transaction object /// Command type, e.g. stored procedure /// Command test /// Parameters for the command 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); } } /// /// Converter to use boolean data type with Oracle /// /// Value to convert /// public static string OraBit(bool value) { if (value) return "Y"; else return "N"; } /// /// Converter to use boolean data type with Oracle /// /// Value to convert /// public static bool OraBool(string value) { if (value.Equals("Y")) return true; else return false; } #region 扩展方法 /// /// 批量插入数据 /// /// 要插入的数据 /// 数据库中的表 public static void BulkToDB(string connectionString, DataTable dt, string targetTable, int timeOut = 300) { if (dt.Rows.Count == 0) { return; } using (Oracle.DataAccess.Client.OracleBulkCopy oracleBulkCopy = new Oracle.DataAccess.Client.OracleBulkCopy(connectionString, Oracle.DataAccess.Client.OracleBulkCopyOptions.UseInternalTransaction)) { try { oracleBulkCopy.DestinationTableName = targetTable; for (int i = 0; i < dt.Columns.Count; i++) { oracleBulkCopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName); } oracleBulkCopy.WriteToServer(dt); } finally { oracleBulkCopy.Connection.Close(); } } } public static void BulkToDB(DataTable dt, string targetTable, int timeOut = 300) { BulkToDB(AYCRMConn, dt, targetTable, timeOut); } #endregion } }