ПОЛУЧИТЕ ЭТО РАБОТУ. Спасибо всем за помощь
Я новичок в программировании, и я пытаюсь проверить, пуста ли моя база данных. Если он пуст, в него будет вставлена запись. Если нет, он должен работать нормально. Я также проверяю, существует ли путь к файлу для моего изображения.
Каждый раз, когда я запускаю программу, он продолжает добавлять “Джон” (Джон должен быть добавлен только в том случае, если база данных пуста).
Мой код:
public class Database {
private ArrayList<Person> people;
public Database(){
people = new ArrayList<Person>();
}
public void run(){
Connection connection = null;
ResultSet resultSet = null;
Statement statement = null;
try {
Class.forName("org.sqlite.JDBC");
connection = DriverManager
.getConnection("jdbc:sqlite:C:\\Users\\James\\Documents\\GoogleApp\\Peopleinfo.sqlite");
statement = connection.createStatement();
if(people.isEmpty()){
File f = new File ("C:\\Users\\James\\Documents\\GoogleApp\\images\\upload.png");
if (f.exists()){
String sql = "INSERT INTO PeoplesInfo (Name,bio,Image) " +
"VALUES ('John','California','C:\\Users\\James\\Documents\\GoogleApp\\images\\upload.png');";
statement.executeUpdate(sql);
System.out.println("Image exists");
}
else {
System.out.println("Image doesn't exist");}
}
else if (!people.isEmpty()) {
String sql = "INSERT INTO PeoplesInfo (Name,bio,Image) " +
"VALUES ('Stan','California','C:\\Users\\James\\Documents\\GoogleApp\\images\\upload.png');";
statement.executeUpdate(sql);
System.out.println("Record added");
}
resultSet = statement
.executeQuery("SELECT name, bio, image FROM PeoplesInfo");
while (resultSet.next()) {
Person p = new Person(resultSet.getString("name"),resultSet.getString("bio"),resultSet.getString("image"));
people.add(p);
System.out.println(p.toString());
System.out.println("Retrieved element is = " + p.getName());
}
resultSet = statement
.executeQuery("SELECT name, bio, image FROM PeoplesInfo");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
resultSet.close();
statement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public ArrayList<Person> getPeople(){
return people;
}
}
Спасибо заранее.
Похоже, что вы не придаете значения людям: вы делаете экземпляр ArrayList, но все. Попробуйте сделать запрос, как только вы подключитесь к своей базе данных: SELECT * FROM PeoplesInfo
а затем проверьте результат этого запроса, чтобы узнать, пуста ли ваша таблица или нет.
Надеюсь, поможет
Для меня это выглядит как простой порядок работы.
Этот код должен произойти до того, как вы проверите, будет ли массив людей пустым.
resultSet = statement
.executeQuery("SELECT name, bio, image FROM PeoplesInfo");
while (resultSet.next()) {
Person p = new Person(resultSet.getString("name"),resultSet.getString("bio"),resultSet.getString("image"));
people.add(p);
System.out.println(p.toString());
System.out.println("Retrieved element is = " + p.getName());
}
Также похоже, что вы пытались сделать несколько разных способов, поэтому у вас есть команда вставки дважды, когда вам это нужно только один раз.
Поэтому перегруппировка должна выглядеть так.
private ArrayList<Person> people;
public Database(){
people = new ArrayList<Person>();
}
public void run(){
Connection connection = null;
ResultSet resultSet = null;
Statement statement = null;
try {
Class.forName("org.sqlite.JDBC");
connection = DriverManager
.getConnection("jdbc:sqlite:C:\\Users\\James\\Documents\\GoogleApp\\Peopleinfo.sqlite");
statement = connection.createStatement();
resultSet = statement
.executeQuery("SELECT name, bio, image FROM PeoplesInfo");
while (resultSet.next()) {
Person p = new Person(resultSet.getString("name"),resultSet.getString("bio"),resultSet.getString("image"));
people.add(p);
System.out.println(p.toString());
System.out.println("Retrieved element is = " + p.getName());
}
if(people.isEmpty()){
String sql = "INSERT INTO PeoplesInfo (Name,bio,Image) " +
"VALUES ('John','California','C:\\Users\\James\\Documents\\GoogleApp\\images\\upload.png');";
statement.executeUpdate(sql);
System.out.println("Record added");
File f = new File ("C:\\Users\\James\\Documents\\GoogleApp\\images\\upload.png");
if (f.exists()){
System.out.println("Image exists");
}
else {
System.out.println("Image doesn't exist");
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
resultSet.close();
statement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public ArrayList<Person> getPeople(){
return people;
}