Tôi vừa bắt đầu khám phá JSqlparser. Theo sự hiểu biết của tôi, tôi đã sửa đổi TablesNamesFinder để trích xuất các cột và bảng và làm việc tốt nhưng một vấn đề rất nhỏ.JSqlParser - Lấy tên bảng từ Cột
@Override
public void visit(Column col) {
Column c = col;
String cname = c.getFullyQualifiedName();
Table t = c.getTable();
System.out.println(t.getName());
}
Bảng này in sẽ không, đối với hầu hết các trường hợp nó in vô cho rất ít trường hợp nó in bí danh của bảng nhưng không phải bàn. Có điều gì tôi quên không?
Phần còn lại của lần
@Override
public void visit(SelectExpressionItem exp){
exp.getExpression().accept(this);
}
@Override
public void visit(Table tableName) {
// System.out.println(tableName.getFullyQualifiedName());
}
@Override
public void visit(Select select) {
select.getSelectBody().accept(this);
}
và đối với các hàm tổng hợp như tổng (col1 * col2), tôi có thể bắt các hàm này trong hàm Truy cập, có cách nào tốt hơn không? Tôi có thể có thêm thông tin về tên của các phần bạn đã đưa ra để truy vấn không. Giống như: Chọn (col1, col2, col3,) ở đây col1, col2, col3 là cơ thể được chọn. Tôi có thể có wiki không? – Waleed
Tôi không chắc chắn, ý của bạn là gì? Bạn có nghĩa là bối cảnh? Giống như cột nào trong đó xây dựng (ví dụ: chức năng nào)? Ngữ cảnh có thể lấy được từ cây phân tích cú pháp. Sử dụng khách truy cập như bạn đã làm là ok. – wumpz