SQL查询将作为字符串传递给我的方法,如果查询是例如,我如何检索查询中的列名。如何从SQL查询中提取列名作为字符串SQL查询作为字符串传递
Select name, dob, age, gender from table1; or
Select uname AS name, hgt AS height, wgt AS weight from table1;
我想获取数组或列表中的列名。
SQL查询将作为字符串传递给我的方法,如果查询是例如,我如何检索查询中的列名。如何从SQL查询中提取列名作为字符串SQL查询作为字符串传递
Select name, dob, age, gender from table1; or
Select uname AS name, hgt AS height, wgt AS weight from table1;
我想获取数组或列表中的列名。
你试过
ResultSetMetaData rsmd = rs.getMetaData();
String name = rsmd.getColumnName(1);
虽然有点令人费解这既适用于在问题中列出的查询:
String query = "Select uname AS name, hgt AS height, wgt AS weight from table1";
Pattern p = Pattern.compile("\\s*\\w+,");Pattern p1 = Pattern.compile("\\s+\\w+\\s+from");
Matcher m = p.matcher(query);Matcher m1=p1.matcher(query);
String colsOnly="";
while(m.find()){colsOnly+=(m.group().trim());}
while(m1.find()){colsOnly+=(m1.group().substring(0,m1.group().length()-4).trim());}
String[] cols = colsOnly.split(",");
谢谢为我工作。 –
String str = "select dept,empid as eid , ename as name,deptname,deptid as department_id from emp";
String[] arr = str.split("as");
StringTokenizer str1 = new StringTokenizer(str, " ,");
ArrayList<String> arrStr = new ArrayList<>();
while (str1.hasMoreTokens())
{
String strT = str1.nextToken().toString();
arrStr.add(strT);
}
for (int i = 0; i < arrStr.size(); i++)
{
if (arrStr.get(i).equals("as"))
{
System.out.println("Orignal\t" + arrStr.get(i - 1));
System.out.println("Alias\t" + arrStr.get(i + 1));
}
}
输出
一部开拓创新EMPID
别名EID
一部开拓创新的ename
别名
一部开拓创新DEPTID
别名部门标识
谢谢,难道就没有别的办法,我可以不用连接到数据库? – MHAbdulkareem
你需要解析queryString,分割, – Satya
好吧,我是新来的这些。你能给我一个我的案例的正则表达式格式。谢谢 – MHAbdulkareem