private SqliteCommand CreateUpdateCommand(bool option) { if (QuotedTableName == String.Empty) { return(null); } CreateNewCommand(ref _updateCommand); string command = String.Format("UPDATE {0} SET ", QuotedTableName); StringBuilder columns = new StringBuilder(); StringBuilder whereClause = new StringBuilder(); int parmIndex = 1; bool keyFound = false; foreach (DataRow schemaRow in _schemaTable.Rows) { if (!IncludedInUpdate(schemaRow)) { continue; } if (columns.Length > 0) { columns.Append(", "); } SqliteParameter parameter = null; if (option) { parameter = _updateCommand.Parameters.Add(CreateParameter(schemaRow)); } else { parameter = _updateCommand.Parameters.Add(CreateParameter(parmIndex++, schemaRow)); } parameter.SourceVersion = DataRowVersion.Current; columns.Append(String.Format("{0} = {1}", GetQuotedString(parameter.SourceColumn), parameter.ParameterName)); } foreach (DataRow schemaRow in _schemaTable.Rows) { if ((bool)schemaRow["IsExpression"] == true) { continue; } if (!IncludedInWhereClause(schemaRow)) { continue; } if (whereClause.Length > 0) { whereClause.Append(" AND "); } bool isKey = (bool)schemaRow ["IsKey"]; SqliteParameter parameter = null; if (isKey) { keyFound = true; } bool allowNull = (bool)schemaRow ["AllowDBNull"]; if (!isKey && allowNull) { if (option) { parameter = _updateCommand.Parameters.Add( String.Format("@{0}", schemaRow ["BaseColumnName"]), SqlDbType.Int); } else { parameter = _updateCommand.Parameters.Add( String.Format("@p{0}", parmIndex++), SqlDbType.Int); } parameter.Value = 1; whereClause.Append("("); whereClause.Append(String.Format(clause1, parameter.ParameterName, GetQuotedString((string)schemaRow ["BaseColumnName"]))); whereClause.Append(" OR "); } if (option) { parameter = _updateCommand.Parameters.Add(CreateParameter(schemaRow)); } else { parameter = _updateCommand.Parameters.Add(CreateParameter(parmIndex++, schemaRow)); } parameter.SourceVersion = DataRowVersion.Original; whereClause.Append(String.Format(clause2, GetQuotedString(parameter.SourceColumn), parameter.ParameterName)); if (!isKey && allowNull) { whereClause.Append(")"); } } if (!keyFound) { throw new InvalidOperationException("Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information."); } string sql = String.Format("{0}{1} WHERE ({2})", command, columns.ToString(), whereClause.ToString()); _updateCommand.CommandText = sql; return(_updateCommand); }
public void RemoveAt(SqliteParameter param) { RemoveAt(param.ParameterName); }
public bool Contains(SqliteParameter param) { return(Contains(param.ParameterName)); }
public int IndexOf(SqliteParameter param) { return(IndexOf(param.ParameterName)); }
public SqliteParameter Add(SqliteParameter param) { Add((object)param); return(param); }