javasql引號
① 怎麼加引號
不知道你用的是什麼語言。
假設你用的是jsp、c#、java或其他c語系的語言
String sql = "";//in java or jsp(string sql = "";//in c#)
sql = "delete from book where time <"+"2005-1-1";
如果你用的是asp、vb等b語系
只要把「+」號改成「&」就可以了。
具體的你可以去看看相關教程里的字元串拼接。
② 一個欄位多個字元串id 這樣查那邊沒有把 每個id 用雙引號包起來所以這樣in查詢查不到 請問怎麼解決
一、我在批量刪除中也遇到過這種問題,
1.之前我是這樣解決的:
select * from A where ID in (${IDS})
若ID全都是int型(Number),把前端每個ID通過逗號,連接傳過來是沒問題的,
裡面的ID若是字元串正如你所說,若還是這樣連傳進去(假設兩個ID 為"ab" "cd")
就會變成:
select * from A where ID in ("ab,cd")
這樣後台會報 ab is not a column 異常
2.然後我這樣解決:
它裡面缺"那就給它唄,在前端js就用","連起來
比如:
String IDS="";
String IDS = IDS +"""+ID+"""+",";這樣每個ID都會有被"包裹了,然後處理下後面的逗號就OK
二、但這樣是能解決的,但是用${}注入sql 是不安全的,最好是用#{},最後得用mybatis動態sql的 foreach方法。你可以自行網路
例子:
<delete id="delHosts" parameterType="java.util.List">
DELETE FROM A
<where>
ID IN
<foreach collection="list" item="item" separator=","
open="(" close=")" index="index">
#{item.ID}
</foreach>
</where>
</delete>
這個地方你傳進來的 類型是什麼 你的parameterType就得是什麼類型,多嘗試就好了
如果有幫助就點個贊吧,關注就更好了(●'◡'●)
③ oracle java.sql.SQLException: ORA-01756: 引號內的字元串沒有正確結束
create or replace
PROCEDURE GETEMAILS
(
e_username VARCHAR2,
e_getemails OUT p_getemails.getemails
) AS
BEGIN
open e_getemails FOR select * FROM e_user where username<>e_username;
END GETEMAILS;