重用连接和语句

时间:2016-03-03 21:11:30

标签: java

我有一个switch-statement代码块,我想使用对连接和Statement对象的引用。当我使用下面的代码时,我收到一个错误;我错过了什么吗?这应该在每种方法中吗?错误是“try”是一个无效的修饰符和构造函数headname被怀疑

  public class ClassSelectorApp {
        try{
        public static final Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/ClassSelector?autoReconnect=true&useSSL=false", "", "");
        Statement myStmt = con.createStatement();
        }
        catch(java.sql.SQLException SQL) {
              SQL.printStackTrace();
            }

2 个答案:

答案 0 :(得分:0)

你需要在方法内部,但如果你想重新使用连接变量,请尝试像这样

public class ClassSelectorApp 
{
    public static Connection con;

    public ClassSelectorApp()
    {
        //insert the TRY AND CATCH STUFF
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/ClassSelector?autoReconnect=true&useSSL=false", "", "");
    }

    public void someMethod()
    {
        //Most likely need some try catch here also.
        Statement myStmt = con.createStatement();
    }

    public static void main(String[] args)
    {
        //Create an object of your class and invoke a method. 
        ClassSelectorApp a = new ClassSelectorApp();
        a.someMethod();
    }

}

答案 1 :(得分:-1)

连接通常不可重复使用 - 您暂时使用它们,然后关闭它们并丢弃引用。要在多个方法中显示“连接”引用,可以使其成为成员变量,并在适当称为“初始化程序”的内容中初始化它。查找“静态初始化程序”(有时称为“静态块”)和“构造函数”,分别用于初始化类和实例成员变量。

public class Foo
{
  private Connection cxn;
  {
    try {
      cxn = DriverManager.getConnection(
      "jdbc:mysql://localhost:3306/ClassSelector?autoReconnect=true&useSSL=false",
       "", "");
    }
    catch( SQLException exc )
    {
      logger.error(exc.getLocalizedMessage());
      throw new IllegalStateException(exc);
    }
  }
  ...
  public void actConnected()
  {
    Statement myStmt = cxn.createStatement();
    . . . 
  }
}

我将“声明”显示为一个局部变量,指出你没有对它们加上“公开”或“静态”。