我正在嘗試將代碼中的 SQL 語(yǔ)句從連接字符串轉(zhuǎn)換為參數(shù)化查詢,但我無(wú)法使其適用于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ù)中,但從未使其正常工作。我收到運(yùn)行時(shí)錯(cuò)誤:錯(cuò)誤 [42000] [Microsoft][SQL Server 的 ODBC 驅(qū)動(dòng)程序 13][SQL Server]“@P1”附近的語(yǔ)法不正確。`關(guān)于如何讓這些查詢工作的任何建議都會(huì)有很大的幫助!
1 回答

一只名叫tom的貓
TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
您不能提供表、字段名稱作為參數(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 關(guān)注
- 194 瀏覽
添加回答
舉報(bào)
0/150
提交
取消