• UA Library.CommandHandler直连第三方数据库


    UA Library.CommandHandler直连第三方数据库  

    数据库连接配置

    C:\Program Files\Siemens\SimaticIT\Unified\bin\Worker.exe.config 

    DBHelperMySQL.cs

    1. using Dapper;
    2. using Dapper.Contrib;
    3. using Dapper.Contrib.Extensions;
    4. using Nancal.Model;
    5. using Newtonsoft.Json.Linq;
    6. using System;
    7. using System.Collections.Generic;
    8. using System.Configuration;
    9. using System.Data;
    10. using System.Data.SqlClient;
    11. using System.IO;
    12. using System.Linq;
    13. using System.Text;
    14. using System.Threading;
    15. using System.Threading.Tasks;
    16. using System.Xml.Linq;
    17. namespace Nancal.DBUtility
    18. {
    19. public class DBHelperMySQL
    20. {
    21. #region Property
    22. //private static readonly string ConnectionString = ConfigurationManager.AppSettings["BaseDb"];
    23. private static IDbConnection ReadingFunctionGetSQLDBConnection()
    24. {
    25. string key = "maindb";
    26. var xmlStr = File.ReadAllText(@"C:\Program Files\Siemens\SimaticIT\Unified\bin\Worker.exe.config");
    27. var str = XElement.Parse(xmlStr);
    28. var connStrings = str.Elements("connectionStrings");
    29. if (connStrings.Count() == 0)
    30. {
    31. throw new Exception($"未配置数据库链接字符串");
    32. }
    33. var db = connStrings.Elements().Where(t => t.Attribute("name").Value == key).FirstOrDefault();
    34. if (db == null)
    35. {
    36. throw new Exception($"未找到数据库链接字符串");
    37. }
    38. var url = db.Attribute("connectionString");
    39. if (url == null)
    40. {
    41. throw new Exception($"未找到数据库链接字符串");
    42. }
    43. var urlStr = url.Value;
    44. if (string.IsNullOrWhiteSpace(urlStr))
    45. {
    46. throw new Exception($"未找到数据库链接字符串");
    47. }
    48. 取接口地址
    49. //var api = platform.Query().FirstOrDefault(t => t.Key == key);
    50. //if (api == null || string.IsNullOrEmpty(api.ApiUrl))
    51. //{
    52. // throw new Exception($"地址{key}不存在");
    53. //}
    54. var connection = new SqlConnection(urlStr);
    55. if (connection.State == ConnectionState.Closed)
    56. {
    57. connection.Open();
    58. }
    59. return connection;
    60. }
    61. #endregion
    62. #region Method
    63. #region 按数据集方式获得数据
    64. ///
    65. /// 获得Table数据
    66. ///
    67. ///
    68. ///
    69. ///
    70. public static DataTable GetData_Table(string sql, out string msg)
    71. {
    72. DateTime beforDT = DateTime.Now;
    73. DataTable dt = new DataTable();
    74. try
    75. {
    76. #region 1.数据合法性校验
    77. msg = "获取数据成功";
    78. if (string.IsNullOrEmpty(sql))
    79. {
    80. msg = "Sql语句为空!";
    81. return dt;
    82. }
    83. #endregion
    84. IDbConnection connection = ReadingFunctionGetSQLDBConnection();
    85. var reader = connection.ExecuteReader(sql);
    86. dt.Load(reader);
    87. //LogProxy.Info("查询开始==========================================================");
    88. //LogProxy.Info("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    89. //LogProxy.Info("GetData_Table()请求SQL:" + sql);
    90. //LogProxy.Info("查询结束==========================================================");
    91. return dt;
    92. }
    93. catch (Exception ex)
    94. {
    95. msg = ex.Message;
    96. //LogProxy.Error("异常信息开始==========================================================");
    97. //LogProxy.Error("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    98. //LogProxy.Error("GetData_Table()请求SQL:" + sql);
    99. //LogProxy.Error("GetData_Table()异常信息:" + ex.Message);
    100. //LogProxy.Error("异常信息结束==========================================================");
    101. return dt;
    102. }
    103. }
    104. ///
    105. /// 获得数据集合
    106. ///
    107. ///
    108. ///
    109. ///
    110. public static DataSet GetDataSet(string sql, out string msg)
    111. {
    112. DateTime beforDT = DateTime.Now;
    113. try
    114. {
    115. using (IDbConnection connection = ReadingFunctionGetSQLDBConnection())
    116. {
    117. msg = "数据获取成功!";
    118. DataSet dataSet = new XDataSet();
    119. IDataReader reader = connection.ExecuteReader(sql);
    120. dataSet.Load(reader, LoadOption.OverwriteChanges, null, new DataTable[] { });
    121. //LogProxy.Info("查询开始==========================================================");
    122. //LogProxy.Info("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    123. //LogProxy.Info("GetDataSet()请求SQL:" + sql);
    124. //LogProxy.Info("查询结束==========================================================");
    125. return dataSet;
    126. }
    127. }
    128. catch (Exception ex)
    129. {
    130. msg = ex.Message;
    131. //LogProxy.Error("异常信息开始==========================================================");
    132. //LogProxy.Error("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    133. //LogProxy.Error("GetDataSet()请求SQL:" + sql);
    134. //LogProxy.Error("GetDataSet()异常信息:" + ex.Message);
    135. //LogProxy.Error("异常信息结束==========================================================");
    136. return null;
    137. }
    138. }
    139. #endregion
    140. #region 按实体类方式获得数据
    141. ///
    142. /// 通过主键获得实体
    143. ///
    144. ///
    145. ///
    146. ///
    147. ///
    148. public static T GetDataById<T>(string id, out string msg) where T : class
    149. {
    150. DateTime beforDT = DateTime.Now;
    151. try
    152. {
    153. #region 1.数据合法性校验
    154. msg = "获取数据成功";
    155. if (string.IsNullOrEmpty(id))
    156. {
    157. msg = "主键Id为空!";
    158. return default(T);
    159. }
    160. #endregion
    161. #region 2.获得数据
    162. IDbConnection connection = ReadingFunctionGetSQLDBConnection();
    163. T model = connection.Get(id);
    164. //LogProxy.Info("查询开始==========================================================");
    165. //LogProxy.Info("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    166. //LogProxy.Info("GetData()请求条件:" + id);
    167. //LogProxy.Info("查询结束==========================================================");
    168. return model;
    169. #endregion
    170. }
    171. catch (Exception ex)
    172. {
    173. msg = ex.Message;
    174. //LogProxy.Error("异常信息开始==========================================================");
    175. //LogProxy.Error("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    176. //LogProxy.Error("GetData()请求条件:" + id);
    177. //LogProxy.Error("GetData()异常信息:" + ex.Message);
    178. //LogProxy.Error("异常信息结束==========================================================");
    179. return default(T);
    180. }
    181. }
    182. ///
    183. /// 获得单条数据
    184. ///
    185. ///
    186. ///
    187. ///
    188. ///
    189. public static T GetData<T>(string sql, out string msg)
    190. {
    191. DateTime beforDT = DateTime.Now;
    192. try
    193. {
    194. #region 1.数据合法性校验
    195. msg = "获取数据成功";
    196. if (string.IsNullOrEmpty(sql))
    197. {
    198. msg = "Sql语句为空!";
    199. return default(T);
    200. }
    201. #endregion
    202. IDbConnection connection = ReadingFunctionGetSQLDBConnection();
    203. List list = connection.Query(sql).AsList();
    204. //LogProxy.Info("查询开始==========================================================");
    205. //LogProxy.Info("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    206. //LogProxy.Info("GetData()请求SQL:" + sql);
    207. //LogProxy.Info("查询结束==========================================================");
    208. if (list.Count > 0)
    209. {
    210. return list[0];
    211. }
    212. else
    213. {
    214. return default(T);
    215. }
    216. }
    217. catch (Exception ex)
    218. {
    219. msg = ex.Message;
    220. //LogProxy.Error("异常信息开始==========================================================");
    221. //LogProxy.Error("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    222. //LogProxy.Error("GetData()请求SQL:" + sql);
    223. //LogProxy.Error("GetData()异常信息:" + ex.Message);
    224. //LogProxy.Error("异常信息结束==========================================================");
    225. return default(T);
    226. }
    227. }
    228. ///
    229. /// 获得多条数据
    230. ///
    231. ///
    232. ///
    233. ///
    234. ///
    235. public static List<T> GetDataList<T>(string sql, out string msg)
    236. {
    237. DateTime beforDT = DateTime.Now;
    238. try
    239. {
    240. #region 1.数据合法性校验
    241. msg = "获取数据成功";
    242. if (string.IsNullOrEmpty(sql))
    243. {
    244. msg = "Sql语句为空!";
    245. return null;
    246. }
    247. #endregion
    248. IDbConnection connection = ReadingFunctionGetSQLDBConnection();
    249. //LogProxy.Info("查询开始==========================================================");
    250. //LogProxy.Info("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    251. //LogProxy.Info("GetDataList()请求SQL:" + sql);
    252. //LogProxy.Info("查询结束==========================================================");
    253. return connection.Query(sql).AsList();
    254. }
    255. catch (Exception ex)
    256. {
    257. msg = ex.Message;
    258. //LogProxy.Error("异常信息开始==========================================================");
    259. //LogProxy.Error("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    260. //LogProxy.Error("GetDataList()请求SQL:" + sql);
    261. //LogProxy.Error("GetDataList()异常信息:" + ex.Message);
    262. //LogProxy.Error("异常信息结束==========================================================");
    263. return null;
    264. }
    265. }
    266. ///
    267. /// 获得多条数据-带分页
    268. ///
    269. ///
    270. ///
    271. ///
    272. ///
    273. public static Tuple<List<T>, int> GetDataList_Page<T>(string sql, out string msg)
    274. {
    275. DateTime beforDT = DateTime.Now;
    276. try
    277. {
    278. using (IDbConnection connection = ReadingFunctionGetSQLDBConnection())
    279. {
    280. try
    281. {
    282. msg = "数据获取成功!";
    283. List rows = null;
    284. int totalCount = 0;
    285. using (var queryMulti = connection.QueryMultiple(sql))
    286. {
    287. if (!queryMulti.IsConsumed)
    288. {
    289. rows = queryMulti.Read() as List;
    290. totalCount = queryMulti.Read<int>().Single();
    291. }
    292. }
    293. //LogProxy.Info("查询开始==========================================================");
    294. //LogProxy.Info("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    295. //LogProxy.Info("GetDataList_Page()请求SQL:" + sql);
    296. //LogProxy.Info("查询结束==========================================================");
    297. return new Tuple, int>(rows, totalCount);
    298. }
    299. catch (Exception ex)
    300. {
    301. msg = ex.Message;
    302. //LogProxy.Error(ex.Message);
    303. return null;
    304. }
    305. }
    306. }
    307. catch (Exception ex)
    308. {
    309. msg = ex.Message;
    310. //LogProxy.Error("异常信息开始==========================================================");
    311. //LogProxy.Error("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    312. //LogProxy.Error("GetDataList_Page()请求SQL:" + sql);
    313. //LogProxy.Error("GetDataList_Page()异常信息:" + ex.Message);
    314. //LogProxy.Error("异常信息结束==========================================================");
    315. return null;
    316. }
    317. }
    318. ///
    319. /// 获得数据列表-带分页
    320. ///
    321. ///
    322. ///
    323. ///
    324. ///
    325. ///
    326. public static Tuple<List<T>, int> GetDataList_Page<T>(string sql, string countSql, out string msg)
    327. {
    328. DateTime beforDT = DateTime.Now;
    329. try
    330. {
    331. using (IDbConnection connection = ReadingFunctionGetSQLDBConnection())
    332. {
    333. connection.Open();
    334. IDbTransaction transaction = connection.BeginTransaction();
    335. try
    336. {
    337. msg = "数据获取成功!";
    338. var rows = connection.Query(sql, transaction) as List;
    339. var totalCount = connection.Query<int>(countSql, transaction).Single();
    340. transaction.Commit();
    341. //LogProxy.Info("查询开始==========================================================");
    342. //LogProxy.Info("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    343. //LogProxy.Info("GetDataList_Page()请求SQL:" + sql);
    344. //LogProxy.Info("查询结束==========================================================");
    345. return new Tuple, int>(rows, totalCount);
    346. }
    347. catch (Exception ex)
    348. {
    349. msg = ex.Message;
    350. //LogProxy.Error(ex.Message);
    351. transaction.Rollback();
    352. return null;
    353. }
    354. }
    355. }
    356. catch (Exception ex)
    357. {
    358. msg = ex.Message;
    359. //LogProxy.Error("异常信息开始==========================================================");
    360. //LogProxy.Error("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    361. //LogProxy.Error("GetDataList_Page()请求SQL:" + sql);
    362. //LogProxy.Error("GetDataList_Page()异常信息:" + ex.Message);
    363. //LogProxy.Error("异常信息结束==========================================================");
    364. return null;
    365. }
    366. }
    367. #endregion
    368. ///
    369. /// 采用事务执行SQL语句
    370. ///
    371. ///
    372. ///
    373. public static bool TransactionExcute(List<string> lsSqls, out string msg)
    374. {
    375. bool resultObj = false;
    376. msg = string.Empty;
    377. try
    378. {
    379. using (IDbConnection connection = ReadingFunctionGetSQLDBConnection())
    380. {
    381. connection.Open();
    382. IDbTransaction transaction = connection.BeginTransaction();
    383. try
    384. {
    385. foreach (string sql in lsSqls)
    386. {
    387. connection.Execute(sql, null, transaction);
    388. }
    389. transaction.Commit();
    390. resultObj = true;
    391. }
    392. catch (Exception ex)
    393. {
    394. msg = ex.Message;
    395. //LogProxy.Error(ex.Message);
    396. transaction.Rollback();
    397. }
    398. }
    399. }
    400. catch (Exception ex)
    401. {
    402. msg = ex.Message;
    403. //LogProxy.Error(ex.Message);
    404. }
    405. return resultObj;
    406. }
    407. #region 按SQL语句执行数据
    408. ///
    409. /// 带SQL语句执行数据(支持Insert、Update、Delete三种数据)
    410. ///
    411. ///
    412. ///
    413. ///
    414. public static int Execute(string sql, out string msg)
    415. {
    416. DateTime beforDT = DateTime.Now;
    417. int result = 0;
    418. msg = "";
    419. try
    420. {
    421. using (IDbConnection connection = ReadingFunctionGetSQLDBConnection())
    422. {
    423. result = connection.Execute(sql);
    424. }
    425. //LogProxy.Info("查询开始==========================================================");
    426. //LogProxy.Info("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    427. //LogProxy.Info("Execute(string sql)请求SQL:" + sql);
    428. //LogProxy.Info("查询结束==========================================================");
    429. }
    430. catch (Exception ex)
    431. {
    432. msg = ex.Message;
    433. //LogProxy.Error("异常信息开始==========================================================");
    434. //LogProxy.Error("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    435. //LogProxy.Error("Execute(string sql)请求SQL:" + sql);
    436. //LogProxy.Error("Execute(string sql)异常信息:" + ex.Message);
    437. //LogProxy.Error("异常信息结束==========================================================");
    438. }
    439. return result;
    440. }
    441. ///
    442. /// 带参数SQL语句执行数据(支持insert、Update、Delete三种数据)
    443. ///
    444. ///
    445. ///
    446. ///
    447. ///
    448. public static int Execute<T>(string sql, T model, out string msg)
    449. {
    450. DateTime beforDT = DateTime.Now;
    451. int result = 0;
    452. msg = "";
    453. try
    454. {
    455. using (IDbConnection connection = ReadingFunctionGetSQLDBConnection())
    456. {
    457. result = connection.Execute(sql, model);
    458. }
    459. //LogProxy.Info("查询开始==========================================================");
    460. //LogProxy.Info("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    461. //LogProxy.Info("Execute(string sql, T model)请求SQL:" + sql);
    462. //LogProxy.Info("Execute(string sql, T model)参数model:" + Common.Helpers.JsonHelper.ObjectToJson(model));
    463. //LogProxy.Info("查询结束==========================================================");
    464. }
    465. catch (Exception ex)
    466. {
    467. msg = ex.Message;
    468. //LogProxy.Error("异常信息开始==========================================================");
    469. //LogProxy.Error("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    470. //LogProxy.Error("Execute(string sql, T model)请求SQL:" + sql);
    471. //LogProxy.Error("Execute(string sql, T model)参数model:" + Common.Helpers.JsonHelper.ObjectToJson(model));
    472. //LogProxy.Error("Execute(string sql, T model)异常信息:" + ex.Message);
    473. //LogProxy.Error("异常信息结束==========================================================");
    474. }
    475. return result;
    476. }
    477. #endregion
    478. #region 按实体类执行数据
    479. ///
    480. /// 直接通过实体类Insert
    481. ///
    482. ///
    483. ///
    484. ///
    485. public static long Insert_Model<T>(T model, out string msg) where T : class
    486. {
    487. msg = string.Empty;
    488. DateTime beforDT = DateTime.Now;
    489. long result = 0;
    490. try
    491. {
    492. using (IDbConnection connection = ReadingFunctionGetSQLDBConnection())
    493. {
    494. result = connection.Insert(model);
    495. }
    496. //LogProxy.Info("查询开始==========================================================");
    497. //LogProxy.Info("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    498. //LogProxy.Info("Insert_Model()参数model:" + Common.Helpers.JsonHelper.ObjectToJson(model));
    499. //LogProxy.Info("查询结束==========================================================");
    500. }
    501. catch (Exception ex)
    502. {
    503. msg = ex.Message;
    504. //LogProxy.Error("异常信息开始==========================================================");
    505. //LogProxy.Error("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    506. //LogProxy.Error("Insert_Model()参数model:" + Common.Helpers.JsonHelper.ObjectToJson(model));
    507. //LogProxy.Error("Insert_Model()异常信息:" + ex.Message);
    508. //LogProxy.Error("异常信息结束==========================================================");
    509. }
    510. return result;
    511. }
    512. ///
    513. /// 通过实体类更新
    514. ///
    515. ///
    516. ///
    517. ///
    518. ///
    519. public static bool Update_Model<T>(T model, out string msg) where T : class
    520. {
    521. msg = string.Empty;
    522. DateTime beforDT = DateTime.Now;
    523. bool isSuccess = false;
    524. try
    525. {
    526. using (IDbConnection connection = ReadingFunctionGetSQLDBConnection())
    527. {
    528. isSuccess = connection.Update(model);
    529. }
    530. //LogProxy.Info("更新开始==========================================================");
    531. //LogProxy.Info("更新时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    532. //LogProxy.Info("Update_Model()参数model:" + Common.Helpers.JsonHelper.ObjectToJson(model));
    533. //LogProxy.Info("更新结束==========================================================");
    534. }
    535. catch (Exception ex)
    536. {
    537. msg = ex.Message;
    538. //LogProxy.Error("异常信息开始==========================================================");
    539. //LogProxy.Error("更新时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    540. //LogProxy.Error("Update_Model()参数model:" + Common.Helpers.JsonHelper.ObjectToJson(model));
    541. //LogProxy.Error("Update_Model()异常信息:" + ex.Message);
    542. //LogProxy.Error("异常信息结束==========================================================");
    543. }
    544. return isSuccess;
    545. }
    546. #endregion
    547. #region 单列值
    548. ///
    549. /// 获得单列值
    550. ///
    551. ///
    552. ///
    553. public static JObject GetSingleColValue(string sql)
    554. {
    555. DateTime beforDT = DateTime.Now;
    556. JObject resultObj = new JObject();
    557. resultObj["flag"] = false;//接口是否正确
    558. resultObj["msg"] = string.Empty;//错误信息
    559. try
    560. {
    561. #region 1.数据合法性校验
    562. if (string.IsNullOrEmpty(sql))
    563. {
    564. resultObj["msg"] = "Sql语句为空!";
    565. return resultObj;
    566. }
    567. #endregion
    568. IDbConnection connection = ReadingFunctionGetSQLDBConnection();
    569. var reader = connection.ExecuteScalar(sql);
    570. if (reader == null)
    571. {
    572. resultObj["flag"] = true;
    573. resultObj["singlecolvalue"] = string.Empty;
    574. }
    575. else
    576. {
    577. string singleColValue = reader.ToString();
    578. resultObj["flag"] = true;
    579. resultObj["singlecolvalue"] = singleColValue;
    580. }
    581. return resultObj;
    582. }
    583. catch (Exception ex)
    584. {
    585. resultObj["flag"] = false;
    586. resultObj["msg"] = ex.Message;
    587. //LogProxy.Error("异常信息开始==========================================================");
    588. //LogProxy.Error("查询时间:" + DateTime.Now.Subtract(beforDT).TotalMilliseconds.ToString() + " 毫秒");
    589. //LogProxy.Error("GetComputeValue()请求SQL:" + sql);
    590. //LogProxy.Error("GetComputeValue()异常信息:" + ex.Message);
    591. //LogProxy.Error("异常信息结束==========================================================");
    592. return resultObj;
    593. }
    594. }
    595. #endregion
    596. #region 事务执行
    597. ///
    598. /// 采用事务执行SQL语句
    599. ///
    600. ///
    601. ///
    602. public static JObject TransactionExcute(List<string> lsSqls)
    603. {
    604. JObject resultObj = new JObject();
    605. resultObj["flag"] = false;
    606. resultObj["msg"] = string.Empty;
    607. try
    608. {
    609. using (IDbConnection connection = ReadingFunctionGetSQLDBConnection())
    610. {
    611. connection.Open();
    612. IDbTransaction transaction = connection.BeginTransaction();
    613. try
    614. {
    615. foreach (string sql in lsSqls)
    616. {
    617. connection.Execute(sql, null, transaction);
    618. }
    619. transaction.Commit();
    620. resultObj["flag"] = true;
    621. }
    622. catch (Exception ex)
    623. {
    624. resultObj["msg"] = ex.Message;
    625. //LogProxy.Error(ex.Message);
    626. transaction.Rollback();
    627. }
    628. }
    629. }
    630. catch (Exception ex)
    631. {
    632. resultObj["msg"] = ex.Message;
    633. //LogProxy.Error(ex.Message);
    634. }
    635. return resultObj;
    636. }
    637. ///
    638. /// 带参数SQL语句执行数据(支持insert、Update、Delete三种数据)
    639. ///
    640. ///
    641. ///
    642. ///
    643. public static JObject TransactionExcuteModel(List agencyModels)
    644. {
    645. JObject resultObj = new JObject();
    646. resultObj["flag"] = false;
    647. resultObj["msg"] = string.Empty;
    648. try
    649. {
    650. using (IDbConnection connection = ReadingFunctionGetSQLDBConnection())
    651. {
    652. connection.Open();
    653. IDbTransaction transaction = connection.BeginTransaction();
    654. try
    655. {
    656. foreach (AgencyModel agencyModel in agencyModels)
    657. {
    658. connection.Execute(agencyModel.sql, agencyModel.model, transaction);
    659. }
    660. transaction.Commit();
    661. resultObj["flag"] = true;
    662. }
    663. catch (Exception ex)
    664. {
    665. resultObj["msg"] = ex.Message;
    666. //LogProxy.Error(ex.Message);
    667. transaction.Rollback();
    668. }
    669. }
    670. }
    671. catch (Exception ex)
    672. {
    673. resultObj["msg"] = ex.Message;
    674. //LogProxy.Error(ex.Message);
    675. }
    676. return resultObj;
    677. }
    678. #endregion
    679. #endregion
    680. }
    681. }

    XDataSet.cs

    1. using System;
    2. using System.Collections.Generic;
    3. using System.Data;
    4. using System.Linq;
    5. using System.Text;
    6. using System.Threading.Tasks;
    7. namespace Nancal.DBUtility
    8. {
    9. public class XDataSet : DataSet
    10. {
    11. public override void Load(IDataReader reader, LoadOption loadOption, FillErrorEventHandler handler, params DataTable[] tables)
    12. {
    13. XLoadAdapter adapter = new XLoadAdapter
    14. {
    15. FillLoadOption = loadOption,
    16. MissingSchemaAction = MissingSchemaAction.AddWithKey
    17. };
    18. if (handler != null)
    19. {
    20. adapter.FillError += handler;
    21. }
    22. adapter.FillFromReader(this, reader, 0, 0);
    23. if (!reader.IsClosed && !reader.NextResult())
    24. {
    25. reader.Close();
    26. }
    27. }
    28. }
    29. }

    XLoadAdapter.cs

    1. using System;
    2. using System.Collections.Generic;
    3. using System.Data;
    4. using System.Data.Common;
    5. using System.Linq;
    6. using System.Text;
    7. using System.Threading.Tasks;
    8. namespace Nancal.DBUtility
    9. {
    10. public class XLoadAdapter: DataAdapter
    11. {
    12. public XLoadAdapter()
    13. {
    14. }
    15. public int FillFromReader(DataSet ds, IDataReader dataReader, int startRecord, int maxRecords)
    16. {
    17. return this.Fill(ds, "Table", dataReader, startRecord, maxRecords);
    18. }
    19. }
    20. }

  • 相关阅读:
    Lua脚本实现setnx命令
    离散数学 --- 二元关系 --- 关系的性质和关系的闭包
    ssh远程连接不了虚拟机ubuntu
    Cilium 系列-2-Cilium 快速安装
    软件设计师_计算机网络——IP地址和子网掩码
    vue修改子组件中的el-input的placeholder字体颜色
    Kafka内容相关
    初创公司即融资上亿,这个“人造超级大脑”赛道为什么不是噱头?
    Waitlist ,验证产品想法是否可行的一个方法
    C++核心编程(三十三)容器(list)
  • 原文地址:https://blog.csdn.net/lybwwp/article/details/134085940