導航:首頁 > 編程語言 > java拼接sql語句

java拼接sql語句

發布時間:2022-09-05 12:10:59

java和sql語句拼接問題

因為拼接字元串沒有預編譯,像mybatis會預編譯,當你傳入一個字元串的時候會自動給你添加上'',表示這是一個字元串,但是你手動字元串拼接的時候就需要自己執行mybatis的這個操作,在字元串上添加 ''。最後sql += " and id='"+ id + "'"相當於sql =sql + " and id='"+ id + "'";就是一個字元串簡單拼接

⑵ JAVA jdbc 里 拼接 sql 的時候 直接用 ++ 拼接上值還是 用 = 那個拼接啊

不談安全的話,使用StringBuffer對象拼接sql效率更高一點。但是如果使用字元串拼接的形式會造成sql注入的問題。因此盡量使用PrepareStatement來預處理sql,即使用=?的sql語句。
sql注入:
假設你想查詢的sql如下:
String sql="select * from user_infor where username='123' and pwd= ",且理論上你想要拼接 "'password'"。那麼如果拼接錯了密碼sql就不會返回想要的結果,但是如果拼接"'wrongPassword' or 1=1 " ,sql語句也會執行成功的。

⑶ java如何拼接sql語句

你咋不試試,
String columnStr;
String valueStr;
for(int i=0; i<columns.length; i++){
columnStr = "(" + columns[i] + ",";
valueStr = "'( \"" + value[i] + ",";
}

參考JAVA轉義字元。網路一下吧。你自己試試,我這里沒裝jdk,懶得弄了,准備休息了。

⑷ java 中 PreparedStatement 拼接sql語句

/**
* 根據顧客的ID,獲得顧客的NAME
*/
public String getCustomername(String cid){
String flag=null;
Connection con=CustomerManager.getConnection();
PreparedStatement ps=null;
ResultSet rs=null;
String sql="select name from customer where id='"+cid+"'";
try {
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
flag=rs.getString("name");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(rs!=null){
try {
rs.close();
ps.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return flag;
}

⑸ 求幫忙一個java的sql語句拼接,條件是 in 包括!

//不知道你usr_id怎麼傳入,現假設ids=[101,102]
Stringsql="select*fromusr_infouwhereu.usr_idin("
StringBuildersd=newStringBuilder(sql);
for(inti=0;i<ids.length();i++){
//實際操作,就是添加"'101『,"
sb.append("'").append(ids[i]).append("',");
}
sb.deleteAt(sb.length-1);//刪除最後一個逗號

sb.append(");");

System.out.print(sb.toString());

⑹ java 中sql拼接

你把你的sql語句定義成變數。
StringBuffer sql=new StringBuffer("select top(?) * from nrxx, lmxx where nrxx.lmbh=lmxx.lmbh and lmxx.lmmc = ? order by nrxx.nrbh desc");
然後加判斷條件
if(){
sql.append("");
}else{
sql.append("");
}
conn .prepareStatement(sql.toString());

⑺ java中SQL拼接的問題

//既然你說有可能不拼接,直接不拼接是無法實現的可以換一種思路,就是全部查詢,比如,你不想加proviceCd=」「的判斷,可以讓他全部查詢出來,因為不加條件就是全盤檢查,使用模糊查詢,讓條件 like 『%』 ,」%「代表任意長度任意字元,所以都符合條件,不會排除任何一個其他項目。希望這個思路能幫到你,如果不行我也沒辦法了。
String sql = select * from intern t WHERE name like '?' and institute like '? 'and gender like '?' and majorCd like '?' and provinceCd like '?';

PreparedStatement pstmt = null;
int status = -1;
try {
pstmt = conn.prepareStatement(sql);
if(name==null)
{
pstmt.setString(1, %);
}
else
{
pstmt.setString(1, name);
}
/*
其他條件判斷,
*/
status = pstmt.executeUpdate();
if (status > 0) {
System.out.println("成功");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DBResources.resource(conn, pstmt);
}

⑻ 高手java里拼sql語句的最大長度是多少

在java中sql的數據類型一般是String或StringBuffer。
java里拼sql語句的最大長度,也就是String或StringBuffer容納字元的最大個數。
String 的最大長度:
我們可以使用串接操作符得到一個長度更長的字元串,那麼,String 對象最多
能容納多少字元呢?查看String的源代碼我們可以得知類String中是使用域 count 來
記錄對象字元的數量,而count 的類型為 int,因此,我們可以推測最長的長度
為 2^32,也就是4G。
不過,我們在編寫源代碼的時候,如果使用 Sting str = "aaaa";的形式定義一個字
符串,那麼雙引號裡面的ASCII 字元最多隻能有 65534 個。為什麼呢?因為在class
文件的規范中, CONSTANT_Utf8_info 表中使用一個16 位的無符號整數來記錄字
符串的長度的,最多能表示 65536 個位元組,而Java class 文件是使用一種變體UTF-8
格式來存放字元的,null 值使用兩個位元組來表示,因此只剩下 65536- 2 = 65534
個位元組。也正是變體UTF-8 的原因,如果字元串中含有中文等非ASCII 字元,那麼
雙引號中字元的數量會更少(一個中文字元佔用三個位元組)。如果超出這個數量,在
編譯的時候編譯器會報錯。

而stringBuffer的最大長度:
一般認為沒有限制,直到內存溢出為止。
public static void main(String[] args) {StringBuffer str = new StringBuffer();for (int i = 0; i < 3640; i++) {str.append("0");}System.out.println(str);//這里輸出了3640個0str.append("0");System.out.println(str);//但是這里輸出的卻是空格?}我的機器上是多於3640就不成了,別的機器好像還不太一樣。
所以這和機器也有關系。可以自己編寫程序進行測試,看測試結果就知道了,這是最可靠的辦法。

⑼ Java動態sql語句拼接

Map<String,Boolean> map = new HashMap<String,Boolean>();

Set<Entry<String, Boolean>> ens = map.entrySet();
StringBuilder sb = new StringBuilder();
if(ens != null && ens.size() > 0){
for(Entry<String, Boolean> en: ens){
if(en.getValue()){
sb.append("'").append(en.getKey()).append("',");
}
}
}
String names = sb.toString();
if(names.length() > 0){
names = names.substring(0, names.length()-1);//去掉最後一個逗號
String sql = "select * from stuent t1 where t1.name in("+names+")";
System.out.println(sql);
}else{
System.out.println("沒有及格的學生");
}

⑽ 關於java中拼接sql,表名作為參數,返回結果集怎麼接 [問題點數:30分]

通常通過SQL查詢語句查出來的結果集封裝在ResultSet對象中,然後我們會這樣處理:
把ResultSet對象中的數據取出來並封裝在javabean中,所以我們需要這樣寫(我假設這里的javabean是Student.java 裡面有private String name和private int id兩個屬性 ,當然你需要生成對應的getter和setter方法)
while(rs.next()){
Student s=new Student();
s.setName(rs.getString("name"));
s.setId(rs.getInt("id"));
return s;
}

這樣就把相應的數據封裝進javabean對象中了,當然還有一種簡便的方法是用Apache開源組織的dbUtils工具 詳看API 這個太多不好說

閱讀全文

與java拼接sql語句相關的資料

熱點內容
體重小本app怎麼樣 瀏覽:777
編程語言需求 瀏覽:935
當兵體重怎麼個演算法 瀏覽:169
加密的電腦文件帶出去怎麼打開 瀏覽:849
死循環會在編譯的時候出錯嗎 瀏覽:986
c51單片機特殊寄存器的原理 瀏覽:578
閃耀永恆特利加密鑰 瀏覽:761
如何誇程序員 瀏覽:778
天津期貨python招聘 瀏覽:265
單片機機器語言寫的程序 瀏覽:553
韓國直播軟體app叫什麼名 瀏覽:920
軍營訓練不聽教官的命令 瀏覽:262
v開頭的音樂播放器是什麼APP 瀏覽:121
單片機是怎麼做出來的 瀏覽:318
博圖怎麼作為opc伺服器 瀏覽:102
編譯做題軟體 瀏覽:297
橋梁檢測pdf 瀏覽:689
化解壓力的一種方法 瀏覽:684
路由器和DSN伺服器有什麼區別 瀏覽:551
android伸縮控制項 瀏覽:861