Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 public void RemoveAt(SqliteParameter param)
 {
     RemoveAt(param.ParameterName);
 }
Esempio n. 3
0
 public bool Contains(SqliteParameter param)
 {
     return(Contains(param.ParameterName));
 }
Esempio n. 4
0
 public int IndexOf(SqliteParameter param)
 {
     return(IndexOf(param.ParameterName));
 }
Esempio n. 5
0
 public SqliteParameter Add(SqliteParameter param)
 {
     Add((object)param);
     return(param);
 }