导航:首页 > 编程语言 > 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语句相关的资料

热点内容
内置函数计算绝对值python 浏览:88
千聊免费课程可以重新加密吗 浏览:507
python能代替php吗 浏览:252
phpexcel样式 浏览:265
安卓手机有没有什么软件可以阻止弹广告的 浏览:306
linux局域网搭建服务器 浏览:690
python编译器mac 浏览:293
windows的doc命令 浏览:463
nfc全加密门禁卡 浏览:636
身份信息被加密 浏览:482
我的盐城app怎么添加不了家庭成员 浏览:493
php商城并发 浏览:348
熊猫绘画app怎么做出大佬的笔刷 浏览:603
云存储服务器知识 浏览:461
服务器cpu是什么指令集 浏览:591
糖猫t10怎么安装app 浏览:992
电脑加密u盘怎么使用 浏览:518
linux如何升级php版本升级 浏览:841
二级程序员c语言难度 浏览:353
批处理编译qt 浏览:67