我正在嘗試將代碼中的 SQL 語句從連接字符串轉換為參數(shù)化查詢,但我無法使其適用于DROP TABLE以下ALTER TABLE情況:using (OdbcCommand delCmd = new OdbcCommand($"DROP TABLE IF EXISTS ?", dbConnection)){ delCmd.Parameters.Add(new OdbcParameter("?", OdbcType.NVarChar) { Value = tableName }); delCmd.ExecuteNonQuery();}using (OdbcCommand delCmd = new OdbcCommand($"ALTER TABLE ? DROP COLUMN ?", dbConnection)){ delCmd.Parameters.Add(new OdbcParameter("?", OdbcType.NVarChar) { Value = tableName }); delCmd.Parameters.Add(new OdbcParameter("?", OdbcType.NVarChar) { Value = columnName }); delCmd.ExecuteNonQuery();}我嘗試將[]or添加''到查詢字符串或參數(shù)中,但從未使其正常工作。我收到運行時錯誤:錯誤 [42000] [Microsoft][SQL Server 的 ODBC 驅動程序 13][SQL Server]“@P1”附近的語法不正確。`關于如何讓這些查詢工作的任何建議都會有很大的幫助!
1 回答

一只名叫tom的貓
TA貢獻1906條經驗 獲得超3個贊
您不能提供表、字段名稱作為參數(shù);但您可以使用格式化或字符串插值:
//TODO: validate tableName and columnName here
//since formatting / string interpolation prone to SQL injection
// e.g.
// if (!Regex.IsMatch(tableName, "^[A-Za-z][A-Za-z0-9_]*$")) {/* wrong table */}
using (OdbcCommand delCmd = new OdbcCommand(
$"ALTER TABLE {tableName} DROP COLUMN {columnName}",
dbConnection))
{
delCmd.ExecuteNonQuery();
}
- 1 回答
- 0 關注
- 174 瀏覽
添加回答
舉報
0/150
提交
取消