Example #1
0
 internal string CreateBulkInsertStatementWithParameter(ITableData data, string tableName, List <OdbcParameter> parameters)
 {
     QueryText.Clear();
     TableName = tableName;
     GetSourceAndDestColumnNames(data);
     AppendBeginSql(tableName);
     while (data.Read())
     {
         QueryText.Append("(");
         string[] placeholder = new string[DestColumnNames.Count];
         QueryText.Append(string.Join(",", placeholder.Select(s => s + "?")));
         QueryText.AppendLine(")");
         foreach (string destColumnName in DestColumnNames)
         {
             int    colIndex     = data.GetOrdinal(destColumnName);
             string dataTypeName = data.GetDataTypeName(colIndex);
             if (data.IsDBNull(colIndex))
             {
                 parameters.Add(new OdbcParameter(destColumnName, DBNull.Value));
             }
             else
             {
                 parameters.Add(new OdbcParameter(destColumnName, data.GetValue(colIndex)));
             }
         }
         if (data.NextResult())
         {
             QueryText.Append(",");
         }
     }
     AppendEndSql();
     return(QueryText.ToString());
 }
Example #2
0
 private void AppendEndSql()
 {
     if (IsAccessDatabase)
     {
         QueryText.AppendLine(") a;");
     }
 }
Example #3
0
 private void AppendBeginSql()
 {
     QueryText.AppendLine($@"INSERT INTO {TN.QuotatedFullName} ({string.Join(",", SourceColumnNames.Select(col => QB + col + QE))})");
     if (IsAccessDatabase)
         QueryText.AppendLine("  SELECT * FROM (");
     else
         QueryText.AppendLine("VALUES");
 }
Example #4
0
 private void AppendEndSql()
 {
     if (IsAccessDatabase)
     {
         QueryText.AppendLine(") a;");
     }
     else if (ConnectionType == ConnectionManagerType.Oracle)
     {
         QueryText.AppendLine(")");
     }
 }
Example #5
0
 private void AppendBeginSql(string tableName)
 {
     QueryText.AppendLine($@"INSERT INTO {tableName} ({string.Join(",", SourceColumnNames)})");
     if (IsAccessDatabase)
     {
         QueryText.AppendLine("  SELECT * FROM (");
     }
     else
     {
         QueryText.AppendLine("VALUES");
     }
 }
Example #6
0
 private void AppendValueListSql(List<string> values, bool lastItem)
 {
     if (IsAccessDatabase)
     {
         QueryText.AppendLine("SELECT " + string.Join(",", values) + $"  FROM {AccessDummyTableName} ");
         if (lastItem) QueryText.AppendLine(" UNION ALL ");
     }
     else
     {
         QueryText.Append("(" + string.Join(",", values) + $")");
         if (lastItem) QueryText.AppendLine(",");
     }
 }
Example #7
0
 private void AppendBeginSql()
 {
     QueryText.AppendLine($@"INSERT INTO {TN.QuotatedFullName} ({string.Join(",", SourceColumnNames.Select(col => QB + col + QE))})");
     if (IsAccessDatabase)
     {
         QueryText.AppendLine("  SELECT * FROM (");
     }
     else if (ConnectionType == ConnectionManagerType.Oracle)
     {
         QueryText.AppendLine($" SELECT {string.Join(",", SourceColumnNames.Select(col => QB + col + QE))} FROM (");
     }
     else
     {
         QueryText.AppendLine("VALUES");
     }
 }
Example #8
0
 private void AppendValueListSql(List <string> values, bool lastItem)
 {
     if (IsAccessDatabase)
     {
         QueryText.AppendLine("SELECT " + string.Join(",", values) + $"  FROM {AccessDummyTableName} ");
         if (lastItem)
         {
             QueryText.AppendLine(" UNION ALL ");
         }
     }
     else if (ConnectionType == ConnectionManagerType.Oracle)
     {
         QueryText.Append("SELECT ");
         for (int i = 0; i < values.Count; i++)
         {
             QueryText.Append($"{values[i]} {QB}{DestColumnNames[i]}{QE}");
             if (i + 1 < values.Count)
             {
                 QueryText.Append(",");
             }
         }
         QueryText.AppendLine(" FROM DUAL");
         if (lastItem)
         {
             QueryText.AppendLine(" UNION ALL ");
         }
     }
     else
     {
         QueryText.Append("(" + string.Join(",", values) + $")");
         if (lastItem)
         {
             QueryText.AppendLine(",");
         }
     }
 }