使用時,我是相當新的SQL和我目前返工另一個 程序員開發了一個Java程序表示。當我打印他查詢select語句的一個腳本包含SQL語法:什麼「=?」在SQL查詢
SELECT * from database WHERE id = ?
我只是想知道什麼是=?
應該怎麼辦?我一直在搜索,我找不到任何相關的答案。
使用時,我是相當新的SQL和我目前返工另一個 程序員開發了一個Java程序表示。當我打印他查詢select語句的一個腳本包含SQL語法:什麼「=?」在SQL查詢
SELECT * from database WHERE id = ?
我只是想知道什麼是=?
應該怎麼辦?我一直在搜索,我找不到任何相關的答案。
這不是一個SQL符號,而是一個JDBC (Java Database Connectivity)符號。 ?
被替換爲單獨指定的參數。使用這種方法,而不是試圖將參數自己替換爲字符串,有助於防止SQL injection的風險。
的?
是一個佔位符,一個參數,這樣就可以在動態傳遞,並返回不同的參數不同的結果。
某處的代碼,你應該看到,他增加了參數Statement對象並執行它。
最有可能你正在使用的工具,將取代「?」具有實際價值。我曾在其他工具(如SQL DTS(數據轉換服務)......)上看到過這一點,但這顯示了我的年齡:)
?
不是SQL語言的一部分。
?
是與JDBC一起使用時用於SQL查詢的佔位符Prepared statement。使用準備好的語句有advantages over the normal statement,特別是當您重複使用它時(例如在循環中)。
下面是一個例子: 「?」
PreparedStatement ps =
connection.prepareStatement("select name from users where user_name = ?");
ps.setString(1, "user1");
的當運行查詢時將被「user1」取代,並返回用戶名爲「user1」的用戶的名字。
您使用的是什麼RDBMS? – 2012-02-03 03:43:53
'?'意味着你即將用實際的ID – 2012-02-03 03:44:15
來取代它@shark我認爲他使用Oracle作爲後端目前使用MySQL作爲我的開發數據庫 – Devjosh 2012-02-03 03:46:36