java - 将文本字段数据从一个类移动到另一个/问题时将其加载到数据库中
问题描述
我正在尝试获取用于登录我的应用程序的用户名的数据,以便在创建约会时将其插入数据库,这样我就可以使用该用户名显示该用户登录的所有约会应用程序。
这是“Programaritest”表
ID_programare | Nume | Prenume | Data | Ora | Departament | Doctor | Username | Nr_telefon
这是用户名保存为唯一的帐户表
ID_account | Username | Password | Email | Nume | Prenume | Admin
这是使用用户名的地方:
package LicentaApp;
public class LogareController implements Initializable {
public LoginVerifier loginVerifier = new LoginVerifier();
@FXML
private TextField Numeutilzator; Numeutilziator is the username that I am talking about
@FXML
private PasswordField Parola;
@FXML
private Label Stare;
@Override
public void initialize(URL location, ResourceBundle resources) {
if (loginVerifier.Conexiune()) {
Stare.setText("");
} else {
Stare.setText("Conexiune nereusita!");
}
}
public void Autentificare (ActionEvent event) {
try {
if(loginVerifier.testaredate(Numeutilzator.getText(), Parola.getText())) {
Stare.setText("Autentificare reusita !");
((Node)event.getSource()).getScene().getWindow().hide();
Stage StagePrincipala= new Stage();
FXMLLoader incarcator= new FXMLLoader();
Pane parinte = incarcator.load(getClass().getResource("/LicentaApp/Meniu.fxml").openStream());
Scene scene = new Scene(parinte);
scene.getStylesheets().add(getClass().getResource("Style1212.css").toExternalForm());
StagePrincipala.setScene(scene);
StagePrincipala.show();
}
else {
Stare.setText("Nume de utilizator sau parola incorect");
}
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@FXML
public void Inregistrare(ActionEvent event) {
try {
((Node)event.getSource()).getScene().getWindow().hide();
Stage PS= new Stage();
FXMLLoader incarcator= new FXMLLoader();
Pane parinte = incarcator.load(getClass().getResource("/LicentaApp/InregistrareUser.fxml").openStream());
Scene scena = new Scene(parinte);
scena.getStylesheets().add(getClass().getResource("Style1212.css").toExternalForm());
PS.setScene(scena);
PS.show();
} catch (Exception e) {
}
*Here I m calling the function that I made in AddProgramareController and
passing it the username located in Numeutilzator*
@FXML
public void GetUsername() {
try {
FXMLLoader loader=new FXMLLoader(getClass().getResource("/LicentaApp/AddProgramare.fxml"));
Parent root = (Parent) loader.load();
AddProgramareController AddPr=loader.getController();
AddPr.MyUsername(Numeutilzator.getText());
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
***THis is where I save the username so I can use it to add it into the db***
在这里,我尝试添加一个预约,以及我通过 FXML 获得的数据,我也尝试将用户名添加到表中
package LicentaApp;
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;
@FXML
private TextField Departament;
@FXML
private TextField Doctor;
@FXML
private TextField Nr_telefon;
@FXML
private TextField Numeutilizator;
public void initialize(URL location, ResourceBundle resources) {
}
*Here's the function that I'll call in GetUsername from LogareController
public void MyUsername(String Numeutilizator) {
this.Numeutilizator.setText(Numeutilizator);
}
@FXML
private void AddProgramare(ActionEvent event) throws SQLException, IOException {
String Interogare1= "INSERT INTO programaritest(Nume,Prenume,Data,Ora,Departament,Doctor,Nr_telefon,Numeutilizator) 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();
String numeutilizator=Numeutilizator.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.setString(8, numeutilizator);
MG.executeUpdate();
// ...
} catch (SQLException exceptie1) {
exceptie1.printStackTrace();
}
}
}
尝试添加新约会时收到的错误消息是:
原因:LicentaApp.AddProgramareController.AddProgramare(AddProgramareController.java:103) 处的 java.lang.NullPointerException
在第 103 行: String numeutilizator=Numeutilizator.getText();
因此,由于某种原因,它似乎仍然没有加载用户名。
所以基本上要么我让用户名将其插入数据库的方式是错误的,要么实际插入是错误的。
解决方案
该错误似乎在您getText method
的class LogareController
.
您有以下内容:
public String getText() {
TextField Numeutilizator = new TextField();
Numeutilizator.getText();
return null;
}
您总是返回 null 而不是文本字段中的文本。您还将Numeutilizator
在始终为空的方法中本地重新创建变量。您应该改用您在课程开始时定义的那个。我相信将getText
方法更改为以下应该可以解决您的错误:
public String getText() {
return this.Numeutilizator.getText();
}
希望有帮助。
推荐阅读
- javascript - Babylon.js 加载 MTL 的问题。文件到 OBJ。从 Blender 导出的模型
- mysql - 我可以在一个实例上为每个架构设置多个从属主机吗?
- python - 如何根据日期范围从字典列表中过滤出子字典
- r - 找不到功能,但是包肯定是安装加载的
- r - 减去并找到值或体积的差异
- html - iframe 后面的下拉菜单?
- j - 从时间设置RNG种子
- asp.net-core - 使用 Azure DevOps 将 Asp.Net Core 应用程序部署到 Azure 时未找到包
- python-3.x - 在 Window 7 上运行“从 skimage 导入数据”代码时发现“ModuleNotFoundError”
- dc.js - 为什么在折线图的上方和下方都呈现黑色区域?