[英]C# SQLite: Can you use a parameter in place of a table name?
我有一個數據庫,其中包含名稱相似的表,並且想根據參數訪問它們的數據。 我嘗試使用的 SQL 字符串如下所示:
string sql = "SELECT * FROM @table WHERE EntryID = @ID"
然后讓參數添加表名
cmd.Parameters.Add("@table", DbType.String).Value = tableName;
這只是我的實際代碼的偽代碼,但它非常接近我正在使用的代碼。
您可以,因為您可以控制字符串的內容。
您可以通過在其中添加表名來構造字符串。
示例: string sql = $"SELECT * FROM {tableName} WHERE EntryID = @ID"
這稱為字符串插值。 我在我的基類中使用類似的方法進行 CRUD 操作。
編輯:
有提到是對SQL注入開放。 如果 OP 示例中名為tableName
的參數由開發人員控制並且不接受用戶輸入,那么這是安全的。 如果出於某種非常奇怪的原因參數需要用戶輸入,則可以打開 SQL 注入並且不應該這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.