0

SQL クエリはメソッドに文字列として渡されます。クエリが次の場合、クエリで列名を取得するにはどうすればよいですか

Select name, dob, age, gender from table1; or 
Select uname AS name, hgt AS height, wgt AS weight from table1;

配列またはリストで列名を取得したい。

4

3 に答える 3

1

やってみました

ResultSetMetaData rsmd = rs.getMetaData();
String name = rsmd.getColumnName(1);
于 2012-05-04T10:34:17.343 に答える
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(",");
于 2012-05-04T13:03:53.930 に答える
0
    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

別名イード

オリジナルエナメ

別名

元の担当者

別名 department_id

于 2014-02-11T06:30:14.693 に答える