Вставка значений в базу данных

Вопрос:

ПОЛУЧИТЕ ЭТО РАБОТУ. Спасибо всем за помощь

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

Каждый раз, когда я запускаю программу, он продолжает добавлять “Джон” (Джон должен быть добавлен только в том случае, если база данных пуста).

Мой код:

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;




}

}

Спасибо заранее.

Ответ №1

Похоже, что вы не придаете значения людям: вы делаете экземпляр ArrayList, но все. Попробуйте сделать запрос, как только вы подключитесь к своей базе данных: SELECT * FROM PeoplesInfo а затем проверьте результат этого запроса, чтобы узнать, пуста ли ваша таблица или нет.

Надеюсь, поможет

Ответ №2

Для меня это выглядит как простой порядок работы.

Этот код должен произойти до того, как вы проверите, будет ли массив людей пустым.

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;
}

Оцените статью
TechArks.Ru
Добавить комментарий