2011-10-12 1 views
1

나는 작업중인 Java 프로젝트에서 기존 데이터베이스 코드를 Ormlite로 대체하려고합니다.create()에서 Ormlite throw SQLException이 발생했습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

그러나 create()를 호출하여 SQLite 데이터베이스에 개체를 삽입하면 SQLException이 throw됩니다. 나는 아마 명백한 실수를하고 있다고 생각하지만, 그것이 무엇인지 알 수 없다. 코드는 다음과 같습니다.

articleDao.createOrUpdate(article1)을 호출하면 예외가 throw됩니다. 여기에 추적 코드가 있습니다.

java.sql.SQLException: Unable to run insert stmt on object [email protected]: INSERT INTO `articles` (`category` ,`storyid` ,`body` ,`added`) VALUES (?,?,?,?) 
    at com.j256.ormlite.misc.SqlExceptionUtil.create(SqlExceptionUtil.java:22) 
    at com.j256.ormlite.stmt.mapped.MappedCreate.insert(MappedCreate.java:90) 
    at com.j256.ormlite.stmt.StatementExecutor.create(StatementExecutor.java:325) 
    at com.j256.ormlite.dao.BaseDaoImpl.create(BaseDaoImpl.java:287) 
    at com.j256.ormlite.dao.BaseDaoImpl.createOrUpdate(BaseDaoImpl.java:312) 
    at com.myapp.tester.OrmliteBugTester.<init>(OrmliteBugTester.java:128) 
    at com.myapp.tester.Tester.main(Tester.java:24) 
Caused by: java.sql.SQLException: NYI 
    at org.sqlite.Conn.prepareStatement(Conn.java:217) 
at com.j256.ormlite.jdbc.JdbcDatabaseConnection.insert(JdbcDatabaseConnection.java:105) 
    at com.j256.ormlite.stmt.mapped.MappedCreate.insert(MappedCreate.java:63) 
    ... 5 more 

무엇이 잘못 되었나요?

답변

0

ORMLite과 함께 올바른 SQLite 드라이버를 사용하고 있는지 확인하십시오. Zentus 드라이버가 NYI 예외를 많이 던졌습니다. 여기 설명서는 다음과 같습니다

http://ormlite.com/docs/sqlite

는 인용하면 거기에 여러 SQLite는 드라이버가 있습니다

. 생성 된 ID를 지원하지 않는 Xerial 드라이버를 사용하고 Zentus 드라이버는 사용하지 마십시오.

+0

안녕하세요! 하지만 내 DB를 제대로 사용하기 위해 Xerial 드라이버를 어떻게 지정할 수 있습니까? – Yarovoy

+0

@ Yarovoy 이것은 JDBC 연결 용입니다. Android가 아닙니다. 프로젝트에 Xerial jar를 포함하면됩니다. – Gray

+0

안녕하세요, "java.sql.SQLException : NYI"를 받고 있어요. 내 의존성을 관리하기 위해 maven을 사용하고 있습니다. 다음은 내 pom.xml의 스냅입니다. 어떻게이 예외를 해결할 수 있는지 알려주세요. com.j256.ormlite ormlite 코어 4.41 com.j256.ormlite ormlite-JDBC 4.41 org.xerial의 SQLite JDBC 3.6. 16 Sam

0

잘 afaik NYI는 아직 구현되지 않음을 의미합니다. 나는이 것이 매개 변수화 된 SQL을 지원하지 않는다고 생각한다. 업데이트 쿼리 문자열에 직접 삽입 할 값을 하드 코드 해보고 작동하는지 확인하십시오.

0

은의 을 의미합니다.

귀하의 버전이 완전히 구현/완료되지 않았습니다. 3.6.20로 업그레이드하십시오.이 예외는 더 이상 이러한 예외가없는 것으로 보입니다.

+0

이것은 그 것이다. 감사! – Rubicon