#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);