簡體   English   中英

C# SQLite:可以用參數代替表名嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM