簡體   English   中英

如何將 datePicker 信息放入我的 sql 數據庫?

[英]How can i put the datePicker info into my sql database?

我正在嘗試制作一個簡單的程序,將電影信息、ID、標題和日期插入數據庫,但是我無法輸入日期,我已經嘗試了一些方法,包括 java 文檔但沒有人幫助。

這是我的代碼:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package prueba3;

import connectivity.ConnectioClass;
import java.net.URL;
import java.util.ResourceBundle;

import connectivity.DatabaseTableRowViewObject;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.time.LocalDate;
import javafx.collections.ObservableList;
import javafx.scene.control.DatePicker;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;

/**
 *
 * @author Guillermo
 */
public class FXMLDocumentController implements Initializable {
    
    @FXML
    private Label label;
    @FXML
    private Button button;
    @FXML
    private TextField texto;
    @FXML
    private Button boton2;
    @FXML
    private TextField texto2;
    @FXML
    private DatePicker texto3;
    @FXML
    private TableColumn<DatabaseTableRowViewObject, Integer> id;
    @FXML
    private TableColumn<DatabaseTableRowViewObject, String> nombre;
    @FXML
    private TableColumn<DatabaseTableRowViewObject, String> fecha;
    
    @FXML
    private TableView<DatabaseTableRowViewObject> tabla;
    ObservableList<DatabaseTableRowViewObject> conexion;
    
    @FXML
    private void handleButtonAction(ActionEvent event) throws SQLException {
        label.setText(texto.getText());

        // added to make sure the properties of the object can be shown..
        id.setCellValueFactory(new PropertyValueFactory<>("id"));
        nombre.setCellValueFactory(new PropertyValueFactory<>("stringy"));
        fecha.setCellValueFactory(new PropertyValueFactory<>("fecha"));
        ConnectioClass connectioclass = new ConnectioClass();
        Connection Connection = connectioclass.getConnection();
        //String sql="INSERT INTO adios VALUES('"+texto.getText()+"')";
      
        String  pop = "INSERT INTO adios VALUES ('"+texto.getText()+"','" +texto2.getText()+"''" +texto3.getValue()+"')";
        //String paco = "INSERT INTO adios (nombre) VALUES('" +texto3.getText()+"')";
        
        Statement statement= Connection.createStatement();

        Statement f = Connection.createStatement();
        ConnectioClass.mostrar(f, tabla);

        //statement.executeUpdate(sql);
        Connection.createStatement();
        //statement.executeUpdate(paco);
                statement.executeUpdate(pop);
    }

    @FXML
    private void botoneliminar(ActionEvent event) throws SQLException {
        label.setText(texto.getText());
        ConnectioClass connectioclass = new ConnectioClass();
        Connection Connection = connectioclass.getConnection();
        String sql="DELETE FROM adios WHERE nombre =('"+texto.getText()+"')";
        Statement statement= Connection.createStatement();
        statement.executeUpdate(sql);
    }

    @FXML
    private void fechas(ActionEvent event){
        LocalDate fechas = texto3.getValue();
    }
    
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }    
}

如您所見,有一個名為“texto3”的日期,而texto3.getValue()不起作用,所以我不知道該怎么做才能讓我的日期選擇器工作。

任何想法? 祝你今天過得愉快。

您應該使用java.sql.PreparedStatement而不是java.sql.Statement 您還應該使用try-with-resources 您用於插入數據庫表adios的代碼應類似於以下內容。

String  pop = "INSERT INTO adios VALUES (?, ?, ?)";
ConnectioClass connectioclass = new ConnectioClass();
try (java.sql.Connection connection = connectioclass.getConnection();
     java.sql.PreparedStatement ps = connection.prepareStatement(pop)) {
    ps.setString(1, texto.getText());
    ps.setString(2, texto2.getText());
    java.sql.Date theDate = java.sql.Date.valueOf(texto3.getValue());
    ps.setDate(3, theDate);
    ps.executeUpdate();
}

class DatePicker的方法getValue返回java.time.LocalDate

方法setDate (在PreparedStatement接口中)接受java.sql.Date參數。 因此,您需要將LocalDate轉換為java.sql.Date Static 方法valueOf (在接口java.sql.Date中)為您進行轉換。

參考https://docs.oracle.com/javase/tutorial/jdbc/index.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM