c# 批量保存数据 OledbAdapter 和 OracleDataAdapter 的参数使用方式有较大区别;
OledbAdapter sql语句使用 “?”用作参数表达式,OracleDataAdapter 使用“:参数名”做表达式 。
//Insert 语句示列
//创建oracleClient Insert 语句
//"INSERT INTO YourTable (Column1, Column2) VALUES (:Param1, :Param2)"
//创建Oledb Insert 语句
//INSERT INTO YourTable (Column1, Column2) VALUES (?, ?)"
//代码实现
/// <summary>
/// 保存数据 DTSrc:Database记录集,StrKeyField:关键子数组,IntDbType:数据库驱动类型 ,StrErrMsg:错误信息
/// </summary>
/// <param name="DTSrc"></param>
/// <param name="StrKeyField"></param>
/// <param name="IntDbType"></param>
/// <param name="StrErrMsg"></param>
/// <returns></returns>
public int SaveData(DataTable DTSrc, string[] StrKeyField,int IntDbType, out string StrErrMsg)
{
int result;
string StrInsertField = string.Empty;
string StrInsertValue = string.Empty;
string StrInsertSql;
string StrUpdaeField = string.Empty;
string StrTemp;
string StrKeyCond = "";
string StrUpdateSql;
string StrDelSql;
//intdbtype==1 oracleClient 否则 为OleDb
if(IntDbType == 1)
{
StrErrMsg = "";
List<OracleParameter> OraInsertParas = new List<OracleParameter>();
List<OracleParameter> OraUpdateCondParas = new List<OracleParameter>();
List<OracleParameter> OraDelCondParas = new List<OracleParameter>();
foreach (DataColumn Column in DTSrc.Columns)
{
int IntNo = OraInsertParas.Count + 1;
StrInsertField += (StrInsertField == "" ? "" :", ") + Column.ColumnName;
StrInsertValue += (StrInsertValue == "" ? ":p" + IntNo.ToString() : ",:p" + IntNo.ToString());
StrUpdaeField += (StrUpdaeField == "" ? "" : ", ") + Column.ColumnName + " = :p" + IntNo.ToString();
OracleParameter OraInsertPara = new OracleParameter()
{
ParameterName = "p" + IntNo.ToString(),
OracleDbType = ConvertOracleDbType(Column.DataType),
SourceColumn = Column.ColumnName
};
OraInsertParas.Add(OraInsertPara);
OracleParameter OraUp

最低0.47元/天 解锁文章
3万+

被折叠的 条评论
为什么被折叠?



