Я пытаюсь создать программу, в которой я могу ввести любой оператор sql в текстовое поле, а затем выполнит его. Если это не запрос, то просто покажите на ярлыке затронутые строки или если это запрос, тогда покажите результаты. Я знаю, как заполнить jtable с помощью набора результатов. Но я немного застрял в запросе против части, не связанной с запросом.Java, TextArea, используемый для создания оператора SQL
-1
A
ответ
0
Вы можете пойти с СТГ, как:
package default;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
public class DBConnector {
private static Connection getConnection() throws SQLException
{
String url = "your-url";
String user = "user";
String password = "password";
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
}
public Vector<Vector<String>> ExecuteQuery(String query)
{
Statement stmt = null;
ResultSet rs = null;
//Vector of vectors for JTable
Vector<Vector<String>> data = new Vector<Vector<String>>();
try {
//Create new statement
stmt = getConnection().createStatement();
//Execute given `query`
rs = stmt.executeQuery(query);
if (stmt.execute(query)) {
rs = stmt.getResultSet();
}
//while there are some rows
while(rs.next())
{
//Create new Vector
Vector<String> temp = new Vector<String>();
int numColumns = rs.getMetaData().getColumnCount();
//Put data into that vector
for (int i = 1 ; i <= numColumns ; i++) {
temp.addElement(rs.getString(i));
}
//Add vector to `data`
data.add(temp);
}
}
catch (SQLException ex){
// handle any errors
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}
finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException sqlEx) { }
rs = null;
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException sqlEx) { } // ignore
stmt = null;
}
}
//Return
return data;
}
}
Сначала вы должны заполнить getConnection()
поля и то и может создать JTable от вызова ExecuteQuery
прохождения TextArea.getText()
строки, потому что вы получите вектор векторов перейти к JTable.
Надеюсь, что я помог :)
ли вы имеете в виду что-то вроде, если это '' insert' или delete' команда по сравнению с «выбрать»? – MadProgrammer
Используйте метод 'execute' интерфейса' Statement'. Его возвращаемое значение сообщает вам, есть ли 'ResultSet' для получения. –
im пытается построить мини-окно разработчика plsql в качестве проекта, поэтому поэтому любое предложение sql может быть введено в –