Oracle 'uid' 是无效的连接字符串属性

2020年03月04日 12:06 · 阅读(1368) ·

开发环境

名称 版本
操作系统 Windows 10 X64
Oracle win64_11gR2_database
PLSQL Developer 11.0.4.1788(64 bit)01.179332 - Unlimited user license
Visual Studio 2010

问题描述

程序中有一个上传 Excel 表,替换某张表所有数据的功能

由于是全量替换,所以使用 DataTable 直接把数据添加到表,代码如下

  1. /// <summary>
  2. /// 批量插入DataTable数据到目标表
  3. /// </summary>
  4. public bool BulkInsertToDB(DataTable dt, string tableName)
  5. {
  6. if (dt == null || dt.Rows.Count == 0)
  7. {
  8. return false;
  9. }
  10. string connStr = GetDBConnectionStr();
  11. OracleConnection conn = new OracleConnection(connStr);
  12. OracleBulkCopy bulkCopy = new OracleBulkCopy(connStr, OracleBulkCopyOptions.UseInternalTransaction);
  13. bulkCopy.BulkCopyTimeout = 260;
  14. bulkCopy.DestinationTableName = tableName; // 目标表的名称
  15. bulkCopy.BatchSize = dt.Rows.Count; // 每一批次中的行数
  16. try
  17. {
  18. conn.Open();
  19. bulkCopy.WriteToServer(dt); // 将DataTable中的数据复制到目标表
  20. return true;
  21. }
  22. catch (Exception ex)
  23. {
  24. Log.Info("Repository-批量插入DataTable数据到目标表:" + ex);
  25. throw ex;
  26. }
  27. finally
  28. {
  29. conn.Close();
  30. if (bulkCopy != null)
  31. {
  32. bulkCopy.Close();
  33. }
  34. }
  35. }

掉用此方法报错 oracle 'uid' 是无效的连接字符串属性

问题分析

我猜测是连接字符串的问题,我的连接字符串是

  1. <add name="TPS.ConnectionString2" connectionString="data source=luoma_db;uid=luoma;pwd=luoma_PS;Max Pool Size=100;Min Pool Size=5;" providerName="System.Data.OracleClient" />

问题解决

其实上面的连接字符串没有问题,平常使用的增删查改都是使用这个连接字符串,但是在这里出现了问题,于是我把这个连接字符串修改为

  1. <add name="TPS.ConnectionString2" connectionString="Data Source=luoma_db;User Id=luoma;Password=luoma_PS;" providerName="System.Data.OracleClient"/>

问题解决

测试结果

再次运行程序,没有报错,调用也成功了。