刷新所选按钮的查询 JAVA
Refresh Query upon botton selected JAVA
我有这个 jdbc 代码,它根据我的 "String Fecha" 使用查询数据填充我的 JtextArea
我需要的是一个可以更改 Fecha 字符串值并使查询重新执行的按钮,以便 JtextArea 根据 String Fecha 的新值所做的新查询获取新值,但我不知道该怎么做有人给我举个例子吗?
这是我的查询代码:
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn3 = DriverManager.getConnection("jdbc:sqlserver://ARTURO-LAPTOP;user=sa;password=sacompusis;database=PDV");
st3 = conn3.createStatement();
rs3= st3.executeQuery("SELECT Nombre_Pdv, SUM(Total) AS Expr1 FROM VENTA_PLATILLOS where Fecha ='"+fecha+"' GROUP BY Nombre_Pdv");
StringBuilder sb = new StringBuilder();
/* sb.append("Ingresos por Punto de Venta" + "\n" +"");*/
while(rs3.next()){
sb.append(rs3.getString(1) +"\n"+ rs3.getString(2)+"\n");
}
textArea.setFont(new Font("Monospaced", Font.BOLD, 15));
textArea.setEditable(false);
textArea.setText(sb.toString());
}
catch(Exception e){
e.printStackTrace();
}
我需要一个按钮,它可以在单击时更改 "String fecha" 值并使查询再次执行
对于您要求的GUI部分,任何基础教程都会给您答案。
对于 JDBC 代码,我会推荐一个代码如下:
您为数据库连接提供的用户在 URL 中定义。出于明显的安全原因(访问您的代码可以访问数据库),这是一个坏主意。将该信息放在可以轻松更改的安全位置(也是出于安全原因),在运行时恢复它们,并使用下一个语法:
Connection dBConnection = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
每次有请求发送时不要连接到数据库。它不是高性能的。建立连接的时间可能需要数百毫秒。在应用程序启动时建立连接并将其保存在内存中,并在每次有请求发送时恢复它。关闭应用程序时不要忘记关闭它!
您的 select SQL 命令中有一个参数,因此最好使用 JDBC PreparedStatement 而不是简单的 Statement。优点:它将被编译一次且仅一次(它保存在 JDBC 连接缓存中)。在你的情况下,循环中有一个 GUI,所以它不是一个巨大的优势。但在一个用户众多的在线互联网应用中,性能的提升就不止于此了。所以学习这个好习惯比较好。
private static final String GET_MY_INFO = "SELECT nombre_pdv, SUM(total) " +
"FROM venta_platillos " +
"WHERE fecha = ? " +
"GROUP BY nombre_pdv";
...
StringBuilder sb = new StringBuilder();
try (
PreparedStatement stmt = dBConnection.prepareStatement(GET_MY_INFO);
) {
stmt.setX(1, fetcha);
...
try (
ResultSet rset = stmt.executeQuery();
) {
while (rset.next()) {
sb.append(rset.getString(1) +"\n"+ rset.getString(2)+"\n");
}
}
}
// use sb as you want
...
这里setX()中的X必须换成变量的类型fetcha.
最好把你的Statement或PreparedStatement和ResultSet 在 try-with-resource 块中(带有 try 的块后跟圆括号/方括号)。这样即使出现异常,它们也会在块的出口处自动关闭。关闭它们很重要,因为它会释放所有使用的 JDBC 资源。并且使用 try-with-resource 块你不必手动管理它(通常在异常情况下特别做得不好)。
我有这个 jdbc 代码,它根据我的 "String Fecha" 使用查询数据填充我的 JtextArea 我需要的是一个可以更改 Fecha 字符串值并使查询重新执行的按钮,以便 JtextArea 根据 String Fecha 的新值所做的新查询获取新值,但我不知道该怎么做有人给我举个例子吗?
这是我的查询代码:
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn3 = DriverManager.getConnection("jdbc:sqlserver://ARTURO-LAPTOP;user=sa;password=sacompusis;database=PDV");
st3 = conn3.createStatement();
rs3= st3.executeQuery("SELECT Nombre_Pdv, SUM(Total) AS Expr1 FROM VENTA_PLATILLOS where Fecha ='"+fecha+"' GROUP BY Nombre_Pdv");
StringBuilder sb = new StringBuilder();
/* sb.append("Ingresos por Punto de Venta" + "\n" +"");*/
while(rs3.next()){
sb.append(rs3.getString(1) +"\n"+ rs3.getString(2)+"\n");
}
textArea.setFont(new Font("Monospaced", Font.BOLD, 15));
textArea.setEditable(false);
textArea.setText(sb.toString());
}
catch(Exception e){
e.printStackTrace();
}
我需要一个按钮,它可以在单击时更改 "String fecha" 值并使查询再次执行
对于您要求的GUI部分,任何基础教程都会给您答案。
对于 JDBC 代码,我会推荐一个代码如下:
您为数据库连接提供的用户在 URL 中定义。出于明显的安全原因(访问您的代码可以访问数据库),这是一个坏主意。将该信息放在可以轻松更改的安全位置(也是出于安全原因),在运行时恢复它们,并使用下一个语法:
Connection dBConnection = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
每次有请求发送时不要连接到数据库。它不是高性能的。建立连接的时间可能需要数百毫秒。在应用程序启动时建立连接并将其保存在内存中,并在每次有请求发送时恢复它。关闭应用程序时不要忘记关闭它!
您的 select SQL 命令中有一个参数,因此最好使用 JDBC PreparedStatement 而不是简单的 Statement。优点:它将被编译一次且仅一次(它保存在 JDBC 连接缓存中)。在你的情况下,循环中有一个 GUI,所以它不是一个巨大的优势。但在一个用户众多的在线互联网应用中,性能的提升就不止于此了。所以学习这个好习惯比较好。
private static final String GET_MY_INFO = "SELECT nombre_pdv, SUM(total) " + "FROM venta_platillos " + "WHERE fecha = ? " + "GROUP BY nombre_pdv"; ... StringBuilder sb = new StringBuilder(); try ( PreparedStatement stmt = dBConnection.prepareStatement(GET_MY_INFO); ) { stmt.setX(1, fetcha); ... try ( ResultSet rset = stmt.executeQuery(); ) { while (rset.next()) { sb.append(rset.getString(1) +"\n"+ rset.getString(2)+"\n"); } } } // use sb as you want ...
这里setX()中的X必须换成变量的类型fetcha.
最好把你的Statement或PreparedStatement和ResultSet 在 try-with-resource 块中(带有 try 的块后跟圆括号/方括号)。这样即使出现异常,它们也会在块的出口处自动关闭。关闭它们很重要,因为它会释放所有使用的 JDBC 资源。并且使用 try-with-resource 块你不必手动管理它(通常在异常情况下特别做得不好)。