我有一个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();
}
答案 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();
. . .
}
}
我将“声明”显示为一个局部变量,指出你没有对它们加上“公开”或“静态”。