/// <summary> /// Avoids the additional database trip that using SqliteCommandBuilder requires. /// </summary> /// <returns>The insert command.</returns> /// <param name="table">Table.</param> /// <param name="values">Values.</param> /// <param name="conflictResolutionStrategy">Conflict resolution strategy.</param> SqliteCommand GetInsertCommand(String table, ContentValues values, ConflictResolutionStrategy conflictResolutionStrategy) { var builder = new StringBuilder("INSERT"); if (conflictResolutionStrategy != ConflictResolutionStrategy.None) { builder.Append(" OR "); builder.Append(conflictResolutionStrategy); } builder.Append(" INTO "); builder.Append(table); builder.Append(" ("); // Append our content column names and create our SQL parameters. var valueSet = values.ValueSet(); var sqlParams = new SqliteParameter[valueSet.LongCount()]; var valueBuilder = new StringBuilder(); var index = 0L; foreach (var column in valueSet) { if (index > 0) { builder.Append(","); valueBuilder.Append(","); } builder.AppendFormat("{0}", column.Key); valueBuilder.AppendFormat("@{0}", column.Key); sqlParams[index++] = new SqliteParameter(column.Key, column.Value); } builder.Append(") VALUES ("); builder.Append(valueBuilder); builder.Append(")"); var sql = builder.ToString(); var command = new SqliteCommand(sql, Connection, currentTransaction); command.Parameters.Clear(); command.Parameters.AddRange(sqlParams); return(command); }
/// <summary> /// Avoids the additional database trip that using SqliteCommandBuilder requires. /// </summary> /// <returns>The update command.</returns> /// <param name="table">Table.</param> /// <param name="values">Values.</param> /// <param name="whereClause">Where clause.</param> /// <param name="whereArgs">Where arguments.</param> SqliteCommand GetUpdateCommand(string table, ContentValues values, string whereClause, string[] whereArgs) { var builder = new StringBuilder("UPDATE "); builder.Append(table); builder.Append(" SET "); // Append our content column names and create our SQL parameters. var valueSet = values.ValueSet(); var valueSetLength = valueSet.Count(); var whereArgsLength = (whereArgs != null ? whereArgs.Length : 0); var sqlParams = new List <SqliteParameter>(valueSetLength + whereArgsLength); foreach (var column in valueSet) { if (sqlParams.Count > 0) { builder.Append(","); } builder.AppendFormat("{0} = @{0}", column.Key); sqlParams.Add(new SqliteParameter(column.Key, column.Value)); } if (!whereClause.IsEmpty()) { builder.Append(" WHERE "); builder.Append(whereClause.ReplacePositionalParams()); } if (whereArgsLength > 0) { sqlParams.AddRange(whereArgs.ToSqliteParameters()); } var sql = builder.ToString(); var command = new SqliteCommand(sql, Connection, currentTransaction); command.Parameters.Clear(); command.Parameters.AddRange(sqlParams.ToArray()); return(command); }
/// <summary> /// Avoids the additional database trip that using SqliteCommandBuilder requires. /// </summary> /// <returns>The insert command.</returns> /// <param name="table">Table.</param> /// <param name="values">Values.</param> /// <param name="conflictResolutionStrategy">Conflict resolution strategy.</param> SqliteCommand GetInsertCommand (String table, ContentValues values, ConflictResolutionStrategy conflictResolutionStrategy) { var builder = new StringBuilder("INSERT"); if (conflictResolutionStrategy != ConflictResolutionStrategy.None) { builder.Append(" OR "); builder.Append(conflictResolutionStrategy); } builder.Append(" INTO "); builder.Append(table); builder.Append(" ("); // Append our content column names and create our SQL parameters. var valueSet = values.ValueSet(); var sqlParams = new SqliteParameter[valueSet.LongCount()]; var valueBuilder = new StringBuilder(); var index = 0L; foreach(var column in valueSet) { if (index > 0) { builder.Append(","); valueBuilder.Append(","); } builder.AppendFormat( "{0}", column.Key); valueBuilder.AppendFormat("@{0}", column.Key); sqlParams[index++] = new SqliteParameter(column.Key, column.Value); } builder.Append(") VALUES ("); builder.Append(valueBuilder); builder.Append(")"); var sql = builder.ToString(); var command = new SqliteCommand(sql, Connection, currentTransaction); command.Parameters.Clear(); command.Parameters.AddRange(sqlParams); return command; }
/// <summary> /// Avoids the additional database trip that using SqliteCommandBuilder requires. /// </summary> /// <returns>The update command.</returns> /// <param name="table">Table.</param> /// <param name="values">Values.</param> /// <param name="whereClause">Where clause.</param> /// <param name="whereArgs">Where arguments.</param> SqliteCommand GetUpdateCommand (string table, ContentValues values, string whereClause, string[] whereArgs) { var builder = new StringBuilder("UPDATE "); builder.Append(table); builder.Append(" SET "); // Append our content column names and create our SQL parameters. var valueSet = values.ValueSet(); var valueSetLength = valueSet.Count(); var whereArgsLength = (whereArgs != null ? whereArgs.Length : 0); var sqlParams = new List<SqliteParameter>(valueSetLength + whereArgsLength); foreach(var column in valueSet) { if (sqlParams.Count > 0) { builder.Append(","); } builder.AppendFormat( "{0} = @{0}", column.Key); sqlParams.Add(new SqliteParameter(column.Key, column.Value)); } if (!whereClause.IsEmpty()) { builder.Append(" WHERE "); builder.Append(whereClause.ReplacePositionalParams()); } if (whereArgsLength > 0) sqlParams.AddRange(whereArgs.ToSqliteParameters()); var sql = builder.ToString(); var command = new SqliteCommand(sql, Connection, currentTransaction); command.Parameters.Clear(); command.Parameters.AddRange(sqlParams.ToArray()); return command; }
/// <summary> /// Avoids the additional database trip that using SqliteCommandBuilder requires. /// </summary> /// <returns>The insert command.</returns> /// <param name="table">Table.</param> /// <param name="values">Values.</param> /// <param name="conflictResolutionStrategy">Conflict resolution strategy.</param> ISQLiteStatement GetInsertCommand (String table, ContentValues values, ConflictResolutionStrategy conflictResolutionStrategy) { var builder = new StringBuilder("INSERT"); if (conflictResolutionStrategy != ConflictResolutionStrategy.None) { builder.Append(" OR "); builder.Append(conflictResolutionStrategy); } builder.Append(" INTO "); builder.Append(table); builder.Append(" ("); // Append our content column names and create our SQL parameters. var valueSet = values.ValueSet(); var sqlParams = new Dictionary<string, object> (); var valueBuilder = new StringBuilder(); var index = 0L; foreach(var column in valueSet) { if (index > 0) { builder.Append(","); valueBuilder.Append(","); } builder.AppendFormat( "{0}", column.Key); valueBuilder.AppendFormat("@{0}", column.Key); index++; sqlParams.Add (column.Key, column.Value); } builder.Append(") VALUES ("); builder.Append(valueBuilder); builder.Append(")"); var stmt = connection.Prepare (builder.ToString ()); foreach (var p in sqlParams) stmt.Bind (p.Key, p.Value); return stmt; }
/// <summary> /// Avoids the additional database trip that using SqliteCommandBuilder requires. /// </summary> /// <returns>The update command.</returns> /// <param name="table">Table.</param> /// <param name="values">Values.</param> /// <param name="whereClause">Where clause.</param> /// <param name="whereArgs">Where arguments.</param> ISQLiteStatement GetUpdateCommand (string table, ContentValues values, string whereClause, string[] whereArgs) { var builder = new StringBuilder("UPDATE "); builder.Append(table); builder.Append(" SET "); // Append our content column names and create our SQL parameters. var valueSet = values.ValueSet(); var valueSetLength = valueSet.Count(); var whereArgsLength = (whereArgs != null ? whereArgs.Length : 0); var sqlParams = new Dictionary<string, object>(valueSetLength + whereArgsLength); foreach(var column in valueSet) { if (sqlParams.Count > 0) { builder.Append(","); } builder.AppendFormat( "{0} = @{0}", column.Key); sqlParams.Add(column.Key, column.Value); } if (!whereClause.IsEmpty()) { builder.Append(" WHERE "); builder.Append(whereClause.ReplacePositionalParams()); } if (whereArgsLength > 0) { for (int i = 0; i < whereArgs.Length; i++) sqlParams.Add ("@" + i, whereArgs [i]); } var sql = builder.ToString(); var stmt = connection.Prepare (sql); foreach (var p in sqlParams) stmt.Bind (p.Key, p.Value); return stmt; }
/// <summary> /// Avoids the additional database trip that using SqliteCommandBuilder requires. /// </summary> /// <returns>The insert command.</returns> /// <param name="table">Table.</param> /// <param name="values">Values.</param> /// <param name="conflictResolutionStrategy">Conflict resolution strategy.</param> sqlite3_stmt GetInsertCommand (String table, ContentValues values, ConflictResolutionStrategy conflictResolutionStrategy) { var builder = new StringBuilder("INSERT"); if (conflictResolutionStrategy != ConflictResolutionStrategy.None) { builder.Append(" OR "); builder.Append(conflictResolutionStrategy); } builder.Append(" INTO "); builder.Append(table); builder.Append(" ("); // Append our content column names and create our SQL parameters. var valueSet = values.ValueSet(); var valueBuilder = new StringBuilder(); var index = 0; foreach(var column in valueSet) { if (index > 0) { builder.Append(","); valueBuilder.Append(","); } builder.AppendFormat( "{0}", column.Key); valueBuilder.Append("@"); index++; } builder.Append(") VALUES ("); builder.Append(valueBuilder); builder.Append(")"); var sql = builder.ToString(); var command = Connection.Prepare(sql); index = 1; foreach(var val in valueSet) { var key = val.Key; command.Bind(index++, values[key]); } return command; }
/// <summary> /// Avoids the additional database trip that using SqliteCommandBuilder requires. /// </summary> /// <returns>The update command.</returns> /// <param name="table">Table.</param> /// <param name="values">Values.</param> /// <param name="whereClause">Where clause.</param> /// <param name="whereArgs">Where arguments.</param> sqlite3_stmt GetUpdateCommand (string table, ContentValues values, string whereClause, string[] whereArgs) { var builder = new StringBuilder("UPDATE "); builder.Append(table); builder.Append(" SET "); // Append our content column names and create our SQL parameters. var valueSet = values.ValueSet(); var valueSetLength = valueSet.Count(); var whereArgsLength = (whereArgs != null ? whereArgs.Length : 0); var index = 0; foreach(var column in valueSet) { if (index++ > 0) { builder.Append(","); } builder.AppendFormat("{0} = @", column.Key); } if (!String.IsNullOrWhiteSpace(whereClause)) { builder.Append(" WHERE "); builder.Append(whereClause); } var sql = builder.ToString(); var command = Connection.Prepare(sql); for(var i = 1; i <= whereArgs.Length; i++) { command.Bind(i, whereArgs[i - 1]); } return command; }