我想从特定列中搜索一些关键字并打印与关键字对应的所有列值,现在问题是如果我使用查询
Select * from Candidate where %C% 等技能,技能中的不同行是:
Java、C、C++、HTML、CSS、Net Beans、我的 Eclipse
Java、Asp.Net、Eclipse
C、PHP、CSS、休眠
现在它正在显示所有行,因为 C 是每一行中的子字符串,我尝试使用 C% 而不是 %C% 但仅显示第 3 行,因为它以 C 开头,但我需要显示所有具有“C”的行作为一个不同的词,我如何搜索整个世界,建议一段代码。
import java.util.*;
import java.sql.*;
import java.io.*;
public class TokensOfString
{
public static void main(String[] args)
{
String str;
String query = "";
try
{
int i =0, cntToken =0;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter the keywords to be searched");
str = br.readLine();
StringTokenizer words = new StringTokenizer(str, ",");
cntToken = words.countTokens();
//System.out.println("No. of Tokens = "+cntToken);
String token[]= new String[cntToken];
while(words.hasMoreElements())
{
token[i] = words.nextToken().trim();
//System.out.println(token[i]);
i++;
}
//System.out.println(++i+" : "+words.nextElement().toString().trim());
query = "SELECT * from can_skills where skills like '"+ token[0] +"%'";
// System.out.println("Query at 34 : "+query);
if(cntToken == 1)
{
query ="";
query = "SELECT * from can_skills where skills like '"+ str +"%'";
}
if(cntToken > 1)
{
for( int j=1; j < cntToken; j++)
query = query + " or skills like '"+ token[j] +"%'";
}
System.out.println("Query at 43 : "+query);
Connection con = null;
Class.forName("com.mysql.jdbc.Driver");
String hostName = "localhost";
String port = "3306";
String userName = "root";
String password = "root";
con = DriverManager.getConnection("jdbc:mysql://" + hostName + ":" + port + "/prem", userName, password);
Statement statement= con.createStatement();
ResultSet rs = statement.executeQuery(query);
while(rs.next())
{
System.out.println(rs.getString(4));
}
}
catch(ClassNotFoundException e){ System.out.println(e); }
catch(Exception ex){ System.out.println(ex); }
}
}