用Select*from where like。Java

在Java语句中,使用SECLET*FROM图书表WHERE作者LIKE‘%刘%’的语句中,引号内的那一部分能不能是变量呢,我想找与个外界输入的字符串相同的,语句该怎么写... 在Java语句中,使用SECLET*FROM 图书表 WHERE 作者 LIKE ‘%刘%’
的语句中,引号内的那一部分能不能是变量呢,我想找与个外界输入的字符串相同的,语句该怎么写呢
QQ1325489414,高手有可能的话能不能在线谈。。。
展开
 我来答
百度网友1b648ac
2010-06-10 · TA获得超过584个赞
知道小有建树答主
回答量:254
采纳率:0%
帮助的人:257万
展开全部
假如你要接受用户的输入,让他可以查询一些数据,支持模糊查找的,所以他输入一些字符,你要把包含这些字符的返回,所以用户的输入当作一个函数的参数被传入,你用String userInput接收,例如用户输入"刘"
public List<User> searchUsers(String userInput) {
... 获得Connection conn
PreparedStatement pstmt = conn.prepareStatement("SECLET*FROM 图书表 WHERE 作者 LIKE ?");
pstmt .setString(1,"%" + userInput + "%");
获得结果集,返回。
}
注意通过pstmt .setString和直接把这个userInput写到SQL语句里的效果不一样,写到SQL语句里用户的输入就当成SQL语句的一部分了,用户的输入还能包含sql语句,虽然用户不这写,而且用户如果输入一些特殊的字符会把你的sql语句破坏掉,而pstmt .setString是不一样的,他是预编译的,会把 ? 留一个位置(占位)然后完全按照你输入的string进行匹配。你自己理解一下吧

楼上两位的很有可能造成SQL注入式攻击, 如果用户查找时这么输入
String strInput = "刘%' or 1=1 --"; 则执行后所有结果都将被查出来。

PreparedStatement 实例包含已编译的 SQL 语句。这就是使语句“准备好”。包含于 PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。IN参数的值在 SQL 语句创建时未被指定。相反的,该语句为每个 IN 参数保留一个问号(“?”)作为占位符。每个问号的值必须在该语句执行之前,通过适当的setXXX 方法来提供。 由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象。因此,多次执行的 SQL 语句经常创建为 PreparedStatement 对象,以提高效率。 作为 Statement 的子类,PreparedStatement 继承了 Statement 的所有功能。另外它还添加了一整套方法,用于设置发送给数据库以取代 IN 参数占位符的值。同时,三种方法 execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要参数。这些方法的 Statement 形式(接受 SQL 语句参数的形式)不应该用于 PreparedStatement 对象。
akirakoko
推荐于2018-03-19 · TA获得超过417个赞
知道小有建树答主
回答量:374
采纳率:0%
帮助的人:273万
展开全部
String strInput = "刘";
String strSQL = "SECLET * FROM 图书表 WHERE 作者 LIKE '%" + strInput + "%'";
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
打开你心菲的地方AX
2010-06-09 · TA获得超过191个赞
知道小有建树答主
回答量:342
采纳率:0%
帮助的人:202万
展开全部
肯定可以是变量的啦。。。不过我不懂java。。。懂asp,asp中就可以的嘛。。。

sql="SECLET*FROM 图书表 WHERE 作者 LIKE '%刘%'"

dim zuozhe
zhuozhe="作者"
sql="SECLET*FROM 图书表 WHERE "&zuozhe&" LIKE '%刘%'"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式