PostgreSQL 데이터베이스에 레코드를 삽입하고 싶습니다. 대부분 필드는 String이지만 java.sql.date와 BIGINT도 있습니다. 내가 어떻게 할 수 있니? 내 코드가 작동하지 않는 것 같습니다.쿼리 오류에서 다른 데이터 유형을 postgreSQL에 삽입하십시오.
public Record(RecordFields data)
{
CreateNewRecord(data);
}
private void CreateNewRecord(RecordFields recordFields)
{
try
{
String addRecord = "INSERT INTO " + GlobalFields.TABLE + " VALUES (? , ? , ? , ? , ? , ? , ? , ? , ?);";
Connection conn = DataBase.Connect();
PreparedStatement query = conn.prepareStatement(addRecord);
query.setLong(1, recordFieldsID);
query.setString(2, recordFields.surname);
query.setString(3, recordFields.name);
query.setString(4, recordFields.sex);
DateTime date = recordFields.bornDate.toDateTime();
query.setTimestamp(5, new Timestamp(date.getMillis()));
query.setString(6, recordFields.adress);
query.setString(7, recordFields.contact);
query.setString(8, recordFields.insurance);
query.setString(9, recordFields.commentary);
query.executeUpdate(addRecord);
}
catch(SQLException e)
{
e.printStackTrace();
}
}
테이블 발생기 :
public static void CreateTable()
{
try
{
Connection conn = DataBase.Connect();
try
{
Statement stat = conn.createStatement();
String createTable = "CREATE TABLE " + GlobalFields.TABLE
+ "(id BIGINT PRIMARY KEY,"
+ "surname TEXT,"
+ "name TEXT,"
+ "sex CHAR(1),"
+ "bornDate DATE,"
+ "adress TEXT,"
+ "contact TEXT,"
+ "insurance TEXT,"
+ "commentary TEXT);";
stat.executeUpdate(createTable);
}
finally
{
conn.close();
}
}
catch(SQLException e)
{
e.printStackTrace();
}
}
공용 클래스 RecordFields { 공공 RecordFields() { }
public long id;
public String surname;
public String name;
public String sex;
public MutableDateTime bornDate;
public String adress;
public String contact;
public String insurance;
public String commentary;
}
어떤 오류가 발생합니까? –
아마 어떻게 작동하지 않는지 설명 할 수 있습니다. 출력은 무엇입니까? 예외가 던져지고 있습니까? 세부 사항은 무엇입니까? – btiernay
org.postgresql.util.PSQLException : PreparedStatement에서 쿼리 문자열을 사용하는 쿼리 메서드를 사용할 수 없습니다. \t at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate (AbstractJdbc2Statement.java : 294) \t at EngineClasses.Record.CreateNewRecord (Pacjent.java:62) \t at EngineClasses.Record. (Record.java:37) \t at mainPackage.Test.main (Test.java:38) –