У меня есть следующая схема базы данных для tabel tblpers
Field Type Null Key Default Extra Privileges
userid int(11) NO PRI (NULL) auto_increment
firstname char(10) NO
lastname char(15) NO 192.168.1.15
sdate datetime NO 0000-00-00 00:00:00
address varchar(100) YES (NULL)
Вот мой код Java;
public class PSMTTest {
private static String jdbcDriver = "org.gjt.mm.mysql.Driver";
private static String host="localhost";
private static String userName = "root";
private static String password = "rootpass";
public static void main(String args[]){
Connection con=null;
try{
if(jdbcDriver!=null){
Class.forName(jdbcDriver);
String url = "jdbc:mysql://"+host+"/mysql";
con = DriverManager.getConnection(url,userName,password);
String insertQuery="insert into `querytest`.`tblpers` " +
"(`userid`,`firstname`,`lastname`,`sdate`,`address`)values ( NULL,?,?,Now(),NULL);";
System.out.println("insertQuery : "+insertQuery);
PreparedStatement psmt=con.prepareStatement(insertQuery);
psmt.setString(2,"param");
psmt.setString(3,"ganak"); //as per the sql exception error comes here
psmt.executeUpdate();
psmt.close();
}
}catch(ClassNotFoundException cnfe){
cnfe.printStackTrace();
}catch(SQLException sqle){
sqle.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
Но когда я пытаюсь запустить код, он выдает следующее исключение
java.sql.SQLException: индекс параметра вне диапазона (3> количество параметров, которое равно 2).
на com.mysql.jdbc.PreparedStatement.setInternal (PreparedStatement.java:2474)
at com.mysql.jdbc.PreparedStatement.setString (PreparedStatement.java:3191)
на PSMTTest.main (PSMTTest.java:45)
Мой ИД пользователя - это первичный ключ и поле автоинкремента, поэтому значение для него автоматически генерируется базой данных.
для полей имя и фамилия у меня есть значения.
но в случае даты я хочу добавить текущие данные и время БД.
В случае адреса значение еще не предоставлено, поэтому его следует сохранить как есть
Скажите, пожалуйста, друзья, что не так с запросом в моем коде?
почему это дает исключение?
пожалуйста, ведите меня, друзья!
Спасибо!