Почему я не могу вставить данные в свою базу данных?

#java #database

#java #База данных

Вопрос:

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;

public class VeriTabani 
{        
    public static void main(String[] args) throws ClassNotFoundException, SQLException
    {
        Class.forName("com.mysql.jdbc.Driver");
        String numara=JOptionPane.showInputDialog("Öğrenci no giriniz:");

        String ad=JOptionPane.showInputDialog("Öğrenci adı:");

        String soyad=JOptionPane.showInputDialog("Öğrenci soyadı:");
        String bolum=JOptionPane.showInputDialog("Bölüm :");

        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:80/deneme","root","");
        Statement ifade = conn.createStatement();

        ifade.executeUpdate("Insert into ogrenci "   " (id , ad , soyad , bolum , numara)"   "values(" ad "','" soyad "','" bolum "','" numara "')");           
     }
}
 

Комментарии:

1. Можем ли мы иметь схему базы данных и, что более важно, причину, по которой она не работает?

2. Пожалуйста, улучшите свой вопрос. У вас есть какое- нибудь сообщение об ошибке?

Ответ №1:

В инструкции insert перечислены пять столбцов, но указаны только четыре значения. Либо укажите значение для id , либо удалите его из списка столбцов.

Ответ №2:

Из того, что я понимаю, id не должно быть в запросе, потому что оно будет задано базой данных.

Вы хотите вставить 5 значений (id,ad,soyad,bolum,numara) , но вы даете только 4 из них values(ad,soyad,bolum,numara) .

Кроме того, и это не связано с вашим вопросом, но вы действительно должны использовать PreparedStatement :

 PreparedStatement preparedStatement = conn.prepareStatement("INSERT INTO ogrenci(ad,soyad,bolum,numara) VALUES (?,?,?,?);");
preparedStatement.setString(1,ad);
preparedStatement.setString(2,soyad);
preparedStatement.setString(3,bolum);
preparedStatement.setString(4,numara);
preparedStatement.executeUpdate();
 

Ответ №3:

Вам нужно либо создать транзакцию, либо установить значение автоматической фиксации true.

После этого

 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:80/deneme","root","");
 

попробуйте

 conn.setAutoCommit(true);