공부/Trouble Shooting
DB에 id값 자동증분하여 저장하기
son_i
2023. 9. 6. 22:22
728x90
wifi_history 테이블에는 4가지 컬럼이 있음. id, x, y, 조회일자
String insertsql = "insert into wifi_history (id.nextval, x, y,make_date)"
+ " values(?,?,?)";
코드는 이렇게 해주고 DB 테이블 만들때는
CREATE TABLE wifi_history (
"id" INTEGER NOT NULL primary key autoincrement ,
"x" INTEGER NULL,
"y" INTEGER NULL,
"make_date" DATETIME NULL
);
이렇게 해줬는데 값 하나만 들어가고 또 입력하니까
org.sqlite.SQLiteException: [SQLITE_CONSTRAINT_PRIMARYKEY] A PRIMARY KEY constraint failed (UNIQUE constraint failed: wifi_history.id)
이런 오류 발생
pk는 유일해야한다는 것이 어겨진 것 같은데 으음.. 왜 자동증분이 안 될까

db에서는 이렇게 하면 되는데 ㅠ.. 으음..
해결 !
아니 내가 밑에 새로 메소드를 만들어서 호출하려고하니까 그럼 database lock오류가 났었거든
그래서 그냥 insert있는 calDist 코드 안에서 insert해줄려고 했는데
자꾸 아래 메소드에서 수정하고 있어서 그런 거였음 ㅡㅡ
String insertsql = "insert into wifi_history (x, y,make_date)"
+ " values(?,?,?)";
preparedStatement = connection.prepareStatement(insertsql);
preparedStatement.setDouble(1, x);
preparedStatement.setDouble(2, y);
java.util.Date utilDate = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
preparedStatement.setDate(3,sqlDate);
preparedStatement.executeUpdate();
그냥 이렇게 자동증분되는 id 값은 아무것도 써주지 않으면 됨 !!!!
잘 저장 되는 걸 확인 할 수 있다.., 휴
728x90