Java 如何以字符串形式从SQL查询中提取列名SQL查询以字符串形式传递

Java 如何以字符串形式从SQL查询中提取列名SQL查询以字符串形式传递,java,api,jakarta-ee,Java,Api,Jakarta Ee,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); 尽管有些复杂,但这对

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=“选择dept,empid作为eid,ename作为name,deptname,deptid作为emp中的department\u id”;
字符串[]arr=str.split(“as”);
StringTokenizer str1=新的StringTokenizer(str,“,”);
ArrayList arrStr=新的ArrayList();
while(str1.hasMoreTokens())
{
字符串strT=str1.nextToken().toString();
arrStr.add(strT);
}       
对于(int i=0;i
输出

原发性脓肿

别名eid

原烯醇

别名

原始部


Alias department_id

谢谢,没有连接到DB的其他方法吗?您需要解析查询字符串,继续拆分,好的,我是新来的。你能为我的案子给我一个正则表达式格式吗。谢谢
    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));
        }
    }