java - 将 DatePicker 中的数据添加到 DB Javafx 中

标签 java mysql javafx

我正在尝试将日期选择器中的数据添加到我的数据库中,但是在提交查询后,在数据库中,日期列中没有添加日期,我很确定我获取的方式我的代码中日期选择器的日期是非常错误的,但我似乎找不到解决方法..

package LicentaApp;

import javafx.scene.control.DatePicker;
import java.io.IOException;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ResourceBundle;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.sqlite.SQLiteErrorCode;
import org.sqlite.SQLiteException;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import java.sql.Date;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.DatePicker;
import javafx.scene.control.TextField;

import javafx.scene.layout.Pane;
import javafx.stage.Stage;

public class AddProgramareController implements Initializable {
ObservableList Timestamp=FXCollections.observableArrayList();

@FXML
private TextField Nume;

@FXML
private TextField Prenume;

@FXML
private TextField Ora;

@FXML
private DatePicker Data; Data is date in my language btw

@FXML
private TextField Departament;

@FXML
private TextField Doctor;

@FXML
private TextField Nr_telefon;

public void initialize(URL location, ResourceBundle resources) {
} 

@FXML 
private void AddProgramare(ActionEvent event) throws SQLException,         IOException  {


    String Interogare1= "INSERT INTO programaritest(Nume,Prenume,Data,Ora,Departament,Doctor,Nr_telefon) VALUES(?,?,?,?,?,?,?)";

    String nume=Nume.getText();
    String prenume=Prenume.getText();
    String data=Data.getPromptText(); *Date
    String ora=Ora.getText();
    String departament=Departament.getText();
    String doctor=Doctor.getText();
    String nr_telefon=Nr_telefon.getText();


    try {
         ConectaredB ConectaredB=new ConectaredB();
         Connection conexiune=ConectaredB.logareDB();
        PreparedStatement MG = conexiune.prepareStatement(Interogare1);


        MG.setString(1, nume);
        MG.setString(2, prenume);
        MG.setString(3, data); *Date
        MG.setString(4, ora);
        MG.setString(5, departament);
        MG.setString(6, doctor);
        MG.setString(7, nr_telefon);


        MG.executeUpdate();

         ((Node)event.getSource()).getScene().getWindow().hide();
            Stage PS= new Stage();
            FXMLLoader incarcator= new FXMLLoader();
            Pane parinte = incarcator.load(getClass().getResource("/LicentaApp/Departamente.fxml").openStream());
            Scene scena = new Scene(parinte);
            scena.getStylesheets().add(getClass().getResource("Style1212.css").toExternalForm());
            PS.setScene(scena);
            PS.show();
            System.out.println("Programare adaugata muchacho");



    } catch (SQLException exceptie1) {
        exceptie1.printStackTrace(); // 
    }

}
}

没有错误消息,什么也没有,它只是不起作用。

最佳答案

您可以使用getValue() 获取用户从DatePicker 中选择的值。由于这是一个日期,因此将其表示为数据库中的日期,并在 PreparedStatement 上使用 setDate(...)。所以:

@FXML 
private void AddProgramare(ActionEvent event) throws SQLException, IOException  {


    String Interogare1= "INSERT INTO programaritest(Nume,Prenume,Data,Ora,Departament,Doctor,Nr_telefon) VALUES(?,?,?,?,?,?,?)";

    String nume=Nume.getText();
    String prenume=Prenume.getText();

    LocalDate data=Data.getValue(); 

    String ora=Ora.getText();
    String departament=Departament.getText();
    String doctor=Doctor.getText();
    String nr_telefon=Nr_telefon.getText();


    try {
        ConectaredB ConectaredB=new ConectaredB();
        Connection conexiune=ConectaredB.logareDB();
        PreparedStatement MG = conexiune.prepareStatement(Interogare1);


        MG.setString(1, nume);
        MG.setString(2, prenume);
        MG.setDate(3, Date.valueOf(data)); 
        MG.setString(4, ora);
        MG.setString(5, departament);
        MG.setString(6, doctor);
        MG.setString(7, nr_telefon);


        MG.executeUpdate();

        // ...
   } catch (SQLException exceptie1) {
       exceptie1.printStackTrace(); /
   }


}

此处需要的导入是 java.time.LocalDatejava.sql.Date

关于java - 将 DatePicker 中的数据添加到 DB Javafx 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50666049/

相关文章:

java - Java 中的 SNMP,具体为 JMX 适配器

jaxb 编码时出现 javax.xml.bind.PropertyException

python - _mysql_exceptions.IntegrityError : (1215, 'Cannot add foreign key constraint' )

php - 安装的 MacPorts PHP,现在无法与 MySQL 交互 - Mac OS X

java - 私有(private)实例可以在对象之间共享吗?

java - 使 Java JScrollpane 垂直滚动而不是水平滚动

php - 解析多行声明版本和编码的 XML 文档时出现 SimpleXML 错误

java - JavaFX 默认在哪里创建 FXML 文件?

java - Gradle 无法使用 useJUnitPlatform() 运行 JUnit 测试

java - 如何更改所有屏幕上的背景图像并保留更改