Wpis z mikrobloga

Cześć, mam pytanie. Łączę się z PostgreSQL i chcę dodać jakiś rodzaj dania wraz ze składnikami. Wyskakuje mi błąd
ERROR: column "lunch" does not exist. Nie wiem gdzie szukać problemu. Zapis wydaje mi się poprawny.

String DB_URL = "jdbc:postgresql:meals_db";
String USER = "postgres";
String PASS = "1111";

Connection connection = DriverManager.getConnection(DB_URL, USER, PASS);
connection.setAutoCommit(true);

Statement statement = connection.createStatement();
statement.executeUpdate("drop table if exists meals");
statement.executeUpdate("drop table if exists ingredients");

statement.executeUpdate("create table meals (" +
"category varchar(20)," +
"meal varchar(20)," +
"meal_id integer" +
")");

statement.executeUpdate("create table ingredients (" +
"ingredient varchar(50)," +
"ingredient_id integer," +
"meal_id integer" +
")");

System.out.println("Which meal do you want to add (breakfast, lunch, dinner)?");
String categoryOfMeal = getCategory();

System.out.println("Input the meal's name:");
String mealName = getMealName();

System.out.println("Input the ingredients:");
String ingredients = getIngredients();

meals.add(new Meals(categoryOfMeal, mealName, ingredients));

System.out.println("The meal has been added!");

int mealId = 1;
int id = 100;

statement.executeUpdate(String.format("insert into meals(category, meal, meal_id) values (%s, %s, %d)",
categoryOfMeal, mealName, mealId
));
statement.executeUpdate(String.format("insert into ingredients(ingredient, ingredient_id) values (%s, %d)",
ingredients, id));

statement.executeUpdate("insert into ingredients(meal_id)" +
"meal_id" +
"from" +
"meals");

statement.close();
connection.close();

#java
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

  • 0
@Yakooo: statement.executeUpdate(String.format("insert into meals(category, meal, meal_id) values (%s, %s, %d)",
categoryOfMeal, mealName, mealId
));

Robię to za pomocą tego. Czy ten zapis jest błędny ?
  • Odpowiedz
  • 0
@Krzyhuu: Tylko że ja właśnie nie chcę dodawać żadnej nowej kolumny. Stworzyłem tablicę meals z trzema kolumnami:
1.category
2.meal
3.mealid

I teraz jak skanuję dane -> categoryOfMeal tą wartość chcę dodać do kolumny "category", a mealName
  • Odpowiedz
statement.executeUpdate(String.format("insert into meals(category, meal, meal_id) values (%s, %s, %d)",

categoryOfMeal, mealName, mealId

));


@Kamishimi: Poczytaj o tym jak powinno się przekazywać parametry w takich poleceniach, czemu String,format jest złym wyborem i co ma to wspólnego z SQL-injection, które właśnie się Tobie wykonało. Wstrzyknąłeś nazwę posiłku jako nazwę kolumny tabeli, a złośliwie można dużo więcej tak popsuć ( ͡° ͜ʖ ͡°) #hackerman
PaaD - >statement.executeUpdate(String.format("insert into meals(category, meal, meal...

źródło: radar3-418x350

Pobierz
  • Odpowiedz