我有一个switch-statement代码块,我想使用对connection和Statement对象的引用。当我使用下面的代码时,我得到一个错误;我是不是遗漏了什么?这应该放在每个方法中吗?错误是"try“是一个无效的修饰符和构造函数头名称
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();
}发布于 2016-03-04 05:19:16
您需要在一个方法中使用它,但是如果您想要重用连接变量,请尝试如下所示
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();
}
}发布于 2016-03-04 05:22:54
连接通常是不可重用的-您使用它们一段时间,然后关闭它们并丢弃引用。要使“Connection”引用在多个方法中可见,您可以使其成为成员变量,并在适当地称为“初始化器”的地方对其进行初始化。分别查找“静态初始化器”(有时被错误地称为“静态块”)和“构造函数”来初始化类和实例成员变量。
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();
. . .
}
}我将“语句”显示为局部变量,以指出您不能将“public”或“static”放在这些变量上。
https://stackoverflow.com/questions/35783120
复制相似问题