[英]Connection variable cannot be resolved
public class GestorBase{
public static void main(String[] args){
try
{
Class.forName("org.sqlite.JDBC");
}
catch (ClassNotFoundException e) {
System.out.println("Unable to load driver class");
// TODO: handle exception
}
try {
Connection con = DriverManager.getConnection("jdbc:sqlite:db/Freepark.sqlite");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("error al buscar la base de datos");
}
Statement sentencia = con.createStatement();
}}
Eclipse說:
“con”變量無法解析為類型。
為什么?
con
變量是try到try的本地變量,
try {
Connection con = DriverManager.getConnection("jdbc:sqlite:db/Freepark.sqlite");
}
您正在訪問con
出來try塊的一側。
它應該是
Connection con = null;
Statement sentencia = null;
try {
con = DriverManager.getConnection("jdbc:sqlite:db/Freepark.sqlite");
sentencia = con.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("error al buscar la base de datos");
} catch (Exception ex){
//handle it
}
問題是你在try
塊中聲明了con
,但是嘗試在塊之外使用它。 您應該執行以下操作:
Connection con = null;
try {
con = DriverManager.getConnection("jdbc:sqlite:db/Freepark.sqlite");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("error al buscar la base de datos");
return; // return because nothing can be done w/out a connection
}
Statement sentencia = con.createStatement();
導致錯誤的原因是,一旦執行退出try
塊, con
變量就會超出范圍,並且不再可見。
以下是關於范圍的一些信息 : 滾動到標題為變量的第一部分
變量的作用域是變量有效的代碼塊。 范圍還控制何時在程序運行時創建和銷毀變量。 我們必須區分四種變量:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.