我有一个表,其中包含属性 id 和 name1,name2,name3.....name10,其中这十个名称都属于 id。
id name1 name2 name3 name4 name5 name6 name7 name8 name9 name10
201 ijk lmn xyz abc efg hks dkm jjl dkn awt
202 mjl pan van slm tko kds jar slk dkf asd
现在我需要检索 id,无论遇到 10 个名称中的哪个名称。如果它是一个 print 语句,则通过保持字符串“name”不变,使用循环来增加数字将非常容易。但是使用mysql语句的时候怎么办呢?首先,是否可以将属性名称作为字符串传递?
例如:为 where 条件传递字符串时,
String uname=jf1.getText();
PreparedStatement stmt=conn.prepareStatement("Select * from staff where id = ?");
stmt.setString(1,uname);
ResultSet rs=stmt.executeQuery();
rs.next();
但是当我需要检查name1到name10的所有属性时,可以这样吗?
String uname=jf1.getText();
PreparedStatement stmt=conn.prepareStatement("Select id from staff where ?=?");
for(int i=1;i<=10<i++)
stmt.setString(1,"name"+i);
stmt.setString(2,uname);
用户通过文本字段给出 uname。
最佳答案
使用 IN 不会更容易!
SELECT
id
FROM
staff
WHERE
? IN (name1, name2, name3, name4, name5,
name6, name7, name8, name9, name10);
关于java - 是否可以在mysql中将表本身的属性名称作为字符串传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27065152/