2013-07-18 6 views
1

Я новичок в JDBC и SQL, и у меня есть эта программа, но когда я запускаю его, я получаю следующее сообщение об ошибке:Ошибка: java.sql.BatchUpdateException: Поле «stu_id» не имеет значения по умолчанию

java.sql.BatchUpdateException: Field 'stu_id' doesn't have a default value. 

Я пытался манипулировать линии

pst = con.prepareStatement("insert into student(first_name,last_name,address) values (?,?,?)"); 

путем добавления 4-й знак вопроса в значениях, и путем добавления stu_id в вставках в студент(). Однако они только дали другие ошибки. Я не знаю, что делать?

package java11; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.SQLException; 
import java.sql.Statement; 

public class PreparedExample { 
public static void main(String[] args) { 
    Connection con=null; 
    PreparedStatement pst=null; 
    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     con = DriverManager.getConnection("jdbc:mysql://localhost:3306/world","root","Sree7rama3**"); 
     pst = con.prepareStatement("insert into student(first_name,last_name,address) values (?,?,?)"); 

     for(int i=1;i<=20;i++){ 
      //pst.setInt(1, i); 
      pst.setString(1, "Hello-"+i); 
      pst.setString(2, "World-"+i); 
      pst.setString(3,"HYD-"+i); 
      pst.addBatch(); 
     } 
     pst.executeBatch(); 

     System.out.println("Update is successful!"); 
    }catch (SQLException e) { 
     System.out.println("There are some SQL errors!"); 
     e.printStackTrace(); 
    }catch (ClassNotFoundException e) { 
     System.out.println("Driver class is not attached to this project!"); 
     e.printStackTrace(); 
    }finally{ 
     try { 
      pst.close(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
     try { 
      con.close(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
} 
+0

Структура таблицы будет полезна структура – Gratzy

+0

таблицы: Первый столбец (stu_id (первичный ключ)), второй столбец (first_name), third_column (last_name), четвертый столбец (адрес) –

+0

, когда вам добавлен stu_id в ваш оператор insert, какие ошибки вы получили – Gratzy

ответ

0

он выглядит, когда вы добавили stu_id к вам заявлению предположительно вы добавили эту строку

pst.setInt(1, i); 

и вы имели эти строки

pst.setString(1, "Hello-"+i); 
pst.setString(2, "World-"+i); 
pst.setString(3,"HYD-"+i); 

Так вы перезаписаны первый параметр (оба 1).

попробовать

pst = con.prepareStatement("insert into student(stu_id,first_name,last_name,address) values (?,?,?,?)"); 



pst.setInt(1, i); 
pst.setString(2, "Hello-"+i); 
pst.setString(3, "World-"+i); 
pst.setString(4,"HYD-"+i); 
+0

Он добавил строки в мою таблицу, но я получаю ошибку java.sql.BatchUpdateException: Дублирующая запись '20 'для ключа «PRIMARY» –

+0

Ну значения для вашего ключа primay должны быть уникальными, поэтому, если вы запускаете это более одного раза, вы будете пытаться вставить дубликат для stu_id. (i ваш инкрементер) – Gratzy

+0

Я не знаю, какую базу данных вы используете, но, возможно, сделаете stu_id автоматически увеличивающимся полем – Gratzy

Смежные вопросы