Как проверить, существует ли файл базы данных SQLite с использованием Java? - PullRequest
7 голосов
/ 18 августа 2011

Я получаю имя файла базы данных от пользователя и хочу проверить, существует ли этот файл. Если он существует, я хочу показать сообщение об ошибке пользователю, но я не знаю, как проверить, существует ли файл.

public static void databaseConnect(String dbName) throws Exception
{
  if (/*same name exists*/) // How do I check this?
  {
    System.out.print("This database name already exists");
  }
  else
  {
    Class.forName("SQLite.JDBCDriver").newInstance();           
    conn = DriverManager.getConnection("jdbc:sqlite:/"+ dbName);
    stat = conn.createStatement(); 
  } 
}

Ответы [ 5 ]

13 голосов
/ 18 августа 2011
public static void databaseConnect(String dbName) throws Exception {

   File file = new File (dbName);

  if(file.exists()) //here's how to check
     {
         System.out.print("This database name already exists");
     }
     else{

           Class.forName("SQLite.JDBCDriver").newInstance();            
           conn = DriverManager.getConnection("jdbc:sqlite:/"+ dbName);
           stat = conn.createStatement(); 

     }
3 голосов
/ 18 августа 2011

Предполагая, что ваш параметр dbName указывает путь к файлу SQLite (несмотря на файлы -wal и -shm), вы можете использовать класс Java java.io.File и его предикат exists()

final File f = new File(dbName);
if (f.exists())
{
  if (f.isDirectory())
  {
    // Warn about the designated name being a directory.
  }
  else
  {
    // Warn about the designated name already existing as a file.
  }
}

Могут быть и другие проверки, например, имеет ли процесс право создавать файл, хотя, в конечном счете, SQLite сделает лучшую работу , гарантируя, что все его требования будут выполнены .

1 голос
/ 08 марта 2017

Я обнаружил, что лучший способ сделать это - проверить размер файла. Если вы выполните:

return new File(DB_NAME).exists() должно равняться True.

Вы должны получить истинное возвращение, потому что оно создаст его. Вместо этого проверьте, чтобы убедиться, что размер файла больше 0. По крайней мере, в этом случае вы знаете, что в файле есть данные без прикрепления и запроса результатов.

Вместо этого:

return new File(DB_NAME).length() > 0

0 голосов
/ 26 марта 2014

поздно, может помочь:

public boolean didPackageCreate() {

    File dbfile = this.getDatabasePath("app.db");
    if(dbfile.exists()){
        // db exist
    }else{
       // db doesn't exist
    }
}
0 голосов
/ 18 августа 2011

Как то так?

public boolean databaseExist()
{
    File dbFile = new File(DB_PATH + DB_NAME);
    return dbFile.exists();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...