sql語句作爲字段保存到mysql數據庫中無法通過的問題

前言:在項目編程過程中,遇到這麼一個問題。
需要將 sql語句 單獨作爲一個字段保存到mysql數據庫中。sql在處理sql語句時會出錯。
java代碼

String myid="111";
String sqlword="select * from citycode where id ='1'";
String sql="insert into dsm03 values('"+myid+"','"+sqlword+"')";
jdbcTemplate.execute(sql);

其中,sqlword是我要保存的sql語句
執行時,遇到下面錯誤。
這裏寫圖片描述
下面是我們控制檯輸出的sql

insert into dsm03 values('111','select * from citycode where id ='1'')

可以看到,其中的’select * from citycode where id =’1” 是不符合sql語法規則的。
解決方法:
對sql語句進行處理,將其中的’(單引號)用”(雙引號)替換,這樣sql在讀取sql語句時,會將”轉義成sql識別的’。

String myid="111";
            String sqlword="select * from citycode where id ='1'";
            String newsqlword=sqlword.replace("'", "\"");//對sql語句進行轉義,這樣sql在讀取sql語句時,會將"轉義成sql識別的'
            String sql="insert into dsm03 values('"+myid+"','"+newsqlword+"')";
            jdbcTemplate.execute(sql);

這是控制檯輸出解決後的sql

insert into dsm03 values('111','select * from citycode where id ="1"')

而且保存到數據庫後的字段仍然是

select * from citycode where id ='1'

格式

發佈了65 篇原創文章 · 獲贊 13 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章