パラメーターParameters

パラメーターを使用して SQL インジェクション攻撃から保護します。Parameters are used to protect against SQL injection attacks. ユーザー入力を SQL ステートメントと連結する代わりにパラメーターを使用することで、入力がリテラル値として扱われ、実行されないようにします。Instead of concatenating user input with SQL statements, use parameters to ensure input is only ever treated as a literal value and never executed. SQLite では、通常、SQL ステートメント内でリテラルを使用できるすべての場所でパラメーターを使用できます。In SQLite, parameters are typically allowed anywhere a literal is allowed in SQL statements.

パラメーターには、:@、または $ のいずれかのプレフィックスを付けることができます。Parameters can be prefixed with either :, @, or $.

command.CommandText =
@"
    INSERT INTO user (name)
    VALUES ($name)
";
command.Parameters.AddWithValue("$name", name);

.NET 値がどのように SQLite 値にマップされるかについて詳しくは、「データ型」を参照してください。See Data types for details about how .NET values are mapped to SQLite values.

切り捨てTruncation

TEXT と BLOB の値を切り捨てるには、Size プロパティを使用します。Use the Size property to truncate TEXT and BLOB values.

// Truncate name to 30 characters
command.Parameters.AddWithValue("$name", name).Size = 30;

代替型Alternative types

ときにより、代替の SQLite 型を使用する必要が生じる場合があります。Sometimes, you may want to use an alternative SQLite type. これを行うには、SqliteType プロパティを設定します。Do this by setting the SqliteType property.

使用できる代替型マッピングは次のとおりです。The following alternative type mappings can be used. 既定のマッピングについては、「データ型」を参照してください。For the default mappings, see Data types.

[値]Value SqliteTypeSqliteType RemarksRemarks
CharChar 整数型Integer UTF-16UTF-16
DateTimeDateTime RealReal ユリウス日の値Julian day value
DateTimeOffsetDateTimeOffset RealReal ユリウス日の値Julian day value
GUIDGuid BlobBlob
TimeSpanTimeSpan RealReal 日数In days
command.CommandText =
@"
    SELECT count(*)
    FROM task
    WHERE finished IS NULL
        AND julianday('now') - julianday(started) > $expected
";
// Convert TimeSpan to days instead of text
command.Parameters.AddWithValue("$expected", expected).SqliteType = SqliteType.Real;

出力パラメーターOutput parameters

SQLite では、出力パラメーターはサポートされません。SQLite doesn't support output parameters. 代わりに、クエリ結果の中で値を返します。Return values in the query results instead.

関連項目See also