본문 바로가기
공부/Trouble Shooting

DB에 id값 자동증분하여 저장하기

by son_i 2023. 9. 6.
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