Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDBC工作流_Java_Mysql_Jdbc - Fatal编程技术网

Java JDBC工作流

Java JDBC工作流,java,mysql,jdbc,Java,Mysql,Jdbc,我目前正在构建一个使用JDBC和MySQL的小应用程序 我有这个DB类。目前它只有一个main方法连接,然后返回一些东西。现在这是正确的工作。但我想把它改成这样: 具有构造函数的DB类。 调用不同SQL查询的多个方法例如,我想这样调用一个用户 db.user('John') 所以,我想防止什么:每次我使用新方法时都必须连接 抱歉,如果问题可能有点不清楚。我是新的JDBC用户 package application; import java.sql.Connection; import java

我目前正在构建一个使用JDBC和MySQL的小应用程序

我有这个DB类。目前它只有一个main方法连接,然后返回一些东西。现在这是正确的工作。但我想把它改成这样:

具有构造函数的DB类。 调用不同SQL查询的多个方法例如,我想这样调用一个用户

db.user('John')

所以,我想防止什么:每次我使用新方法时都必须连接

抱歉,如果问题可能有点不清楚。我是新的JDBC用户

package application;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DB {

    //ToDo Add these credentials leter to a main config file.
    private static String connectionUrl = "jdbc:mysql://localhost:3306/tvh_jdbctesting";
    private static String connectionUser = "root";
    private static String connectionPassword = "root";
    private static String jdbc = "com.mysql.jdbc.Driver";


    DB(){

    }

    public static void main(String[] args) {
            Connection conn = null;
            Statement stmt = null;
            ResultSet rs = null;
            try {
                Class.forName(jdbc).newInstance();

                //Makes connection with the provided credentials.
                conn = DriverManager.getConnection(connectionUrl, connectionUser, connectionPassword);
                stmt = conn.createStatement();

                rs = stmt.executeQuery("SELECT * FROM test");
                while (rs.next()) {

                    String id = rs.getString("id");
                    String name = rs.getString("name");
                    String wachtwoord = rs.getString("wachtwoord");

                    System.out.println(id + name + wachtwoord);

                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try { if (rs != null) rs.close(); } catch (SQLException e) { e.printStackTrace(); }
                try { if (stmt != null) stmt.close(); } catch (SQLException e) { e.printStackTrace(); }
                try { if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); }
            }
        }

    }

对于一个新的JDBC人员来说,这实际上是一个不错的开始。我最大的挑剔是Class.forName返回的类不需要
newInstance
,这取决于您使用的驱动程序是否需要Class.forName

如果您在这里所说的是一个从命令行运行的小单线程程序,它完成了它的任务并离开了,那么您可以让main方法创建连接,创建其他对象并调用它们,传入连接,然后让主程序在最后的finally块中关闭连接。我宁愿显式地传递连接,也不愿使用某个DB类


如果您的程序有多个线程必须同时访问数据库,或者您希望程序能够在可能导致数据库连接中断的网络漏洞中生存,那么您可以开始考虑使用连接池。如果你觉得JDBC太痛苦了。

如果这个问题可能有点不清楚,那么很抱歉。是的,你的问题不清楚,错在哪里?你试过实施什么吗?您可以创建一个返回
语句的方法
对象,并在不同的方法中使用它?连接池呢?甚至只是一个物体。尽管您应该尝试使用Java可以做的面向对象的事情。没有把东西放在主课上。这真的帮助我走得更远。谢谢