JDBC insert, delete 질문.

JDBC insert, delete 질문.

작성일 2022.11.22댓글 2건
    게시물 수정 , 삭제는 로그인 필요

자바 데이터베이스를 배우면서 한 데이터 베이스의 테이블에 정보를 담는 예제를 해보는 중입니다.
primary key로 id를 쓰고 title, genre, year로 설정했는데
테이블에서 데이터를 삭제할 때, id를 기준으로 
int delete_id = sc.nextInt();
String s = "delete from Movies where id like ";
s +=  delete_id;
stmt.excuteUpdate(s);
이런 식으로 진행했고, 추가할 때는
String s = "INSERT INTO Movies (title, genre, year) VALUES ";
s += "('" + title + "','" + genre + "','" + year+ "')";
stmt.executeUpdate(s);
이렇게 진행하였습니다.
이때 문제가 id를 통해 삭제를 하고 새로운 데이터를 추가할 때, 원래 데이터의 id가 1,2,3 이 있었다면 추가 후 아이디가 5로 나오는 겁니다. 역시 또 5를 삭제 후 데이터를 추가하면 6으로 나옵니다. id가 삭제 한 뒤에 추가 하더라도 순차적으로 나왔으면 합니다.

Connection 부분은 제외한 본문 입니다. 아직 많이 부족하여 지저분하다고 느껴지실 수 있으실 것 같습니다..
id => INTAUTO_INCREMENT  title => varchar(255) genre => varchar(255) year => INT 
PRIMARY KEY (id)

private static void addMovie(String title, String genre, int year
) throws SQLException {
Connection con = makeConnection();
try {
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM Movies");

stmt = con.createStatement();
String s = "INSERT INTO Movies (title, genre, year) VALUES ";
s += "('" + title + "','" + genre + "','" + year+ "')";
stmt.executeUpdate(s);
       con.close();
} catch (SQLException e) {
System.out.println(e.getMessage());
System.exit(0);
}
}
public static void main(String arg[]) throws SQLException {
Scanner sc = new Scanner(System.in);
while(true) {
int ans = sc.nextInt();
Connection con = makeConnection();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM Movies");
if (ans == 1) {
while (rs.next()) {
int id = rs.getInt("id");
String title = rs.getString("title");
String genre = rs.getString("genre");
String year = rs.getString("year");
System.out.println(id + " " + title+" / "+genre+" / "+year);
}
con.close();
stmt.close();
}
else if (ans ==2) {
System.out.println("제목, 장르, 년도 순으로 입력.");
String ntitle = sc.next();
String ngenre = sc.next();
int nyear = sc.nextInt();
addMovie(ntitle, ngenre, nyear);
stmt.close();
con.close();
}
else if (ans == 3) {
System.out.println("삭제하고자 하는 id입력.");
int did = sc.nextInt();
String s = "delete from Movies where id like ";
s+= did;
stmt.executeUpdate(s);
stmt.close();
}
else if (ans == 4) {
con.close();
System.out.println("종료합니다.");
break;
}
}
}

}


#jdbc insert 여러개 #jdbc insert into #jdbc insert query #jdbc insert auto increment id #jdbc insert bulk #jdbc insert example #jdbc insert json #jdbc insert blob #jdbc insert batch #jdbc insert or update

profile_image 익명 작성일 -

AUTO_INCREMENT는 테이블의 ID 값과 관계없이 증가되는 값이므로 원하시는 작업에는 맞지 않습니다.

데이터를 삽입하기전에 먼저 테이블에서 제일 높은 ID값을 조회하고 그 값에 1을 증가하여 새로운 데이터를 삽입할때 직접 대입하시면 됩니다.

데이터 삽입 쿼리를 아래와 같이 변경하시면 테이블의 ID 값이 제일 높은 값을 기준으로 ID를 설정할 수 있습니다.

String s = "INSERT INTO Movies (id, title, genre, year)" + " SELECT MAX(id)+1, '" + title + "','" + genre + "','" + year + "'" + " FROM Movies";

하지만, ID 열은 단지 행을 식별하기 위한 기능으로 사용되므로 순차적일 필요는 없습니다.

profile_image 익명 작성일 -

autoincrese나 sequnce 같은것은 되돌아 가지 않습니다 .

순차적으로 하실꺼면..

select max(id)+1 from Movies 이런식으로 가장 큰값에 +1 을 해서 id를 구하고

그것을 대입해줘야 합니다. ^^

String s = "INSERT INTO Movies ( id , title, genre, year) VALUES ";

s += "('" + id + "','" + title + "','" + genre + "','" + year+ "')";

JDBC Excel Delete 구문..

JDBC로 Excel을 연결 해서 사용하는데요.. Insert, Update 문은 제대로 동작이 되는데.. Delete문은... [ 질문 정리 ] 1. JDBC로 Excel 삭제가 안되는건가?...

JDBC 질문이요!!!

... 보시면 CRUD 전부 예제로 나와 있습니다. 이거 참고하셔서 하시면 됩니다. http://www.codejava.net/java-se/jdbc/jdbc-tutorial-sql-insert-select-update-and-delete-examples

자바 jdbc 프로그래밍 질문

... JButton insert, cancel, search, next, prev, home;... url = "jdbc:mysql://localhost/hanshindb?... ON DELETE CASCADE ON UPDATE CASCADE) 라고 뜹니다 ㅠㅠ...

JDBC 질문

... sql = "insert into person values(null,?,?,?)"; //null은 건너뛰겟다. //String sql = "delete from friend where no=?"; ps = con.prepareStatement(sql); ps.setString(1,"홍길동...

자바 DB delete 질문입니다.

... try { connect = DriverManager.getConnection("jdbc:odbc:GorgeousDB","sa","3478... 즉 이놈은 create나 insert ,update,delete등에 사용되고 명령어에 따라...

점이 생겨서 질문 합니다. 도와주세요.

... JDBC 와 자바를 공부하는 저에게는 이 질문에 대한 답이 필요해서 물어보게... 즉 SELECT, INSERT, UPDATE, DELETE에 대한 권한이 있다면 그냥 스키마.테이블로 하면 됩니다....