关于在SQL语句中使用Java值的混淆
我需要从SQL数据库中检索车辆注册列表,并将它们放入JavaGUI中的下拉列表中。一旦从列表中选择了车辆注册(作为登录序列的一部分),我想在对数据库进行后续SQL查询的“where”语句中使用它,以获取仅适用于该车辆的库存状态等信息 我已经完成了第一部分,即从数据库中检索列表,并在下拉列表中显示车辆注册表,供用户选择,我已经设法在可选面板中显示它,以及在Jlabel框中的另一个类中显示它,但我似乎不知道如何在单独的查询类中使用此选定的veh reg,即作为select/where语句的一部分 我一直在试图找到一个解决方案,但对于是否使用数组列表并将注册号放入其中,以及如何将其提供给其他类,以便检索SQL语句中使用的值,我感到困惑。我现在完全迷路了,所以任何正确方向的建议都会非常有用 我对Java和编程都很陌生,所以如果你觉得有必要发表讽刺性的评论(你真是个书呆子),那就不用发帖了 这是从数据库中获取注册并将其添加到一个GUI中的组合框的代码:关于在SQL语句中使用Java值的混淆,java,sql,Java,Sql,我需要从SQL数据库中检索车辆注册列表,并将它们放入JavaGUI中的下拉列表中。一旦从列表中选择了车辆注册(作为登录序列的一部分),我想在对数据库进行后续SQL查询的“where”语句中使用它,以获取仅适用于该车辆的库存状态等信息 我已经完成了第一部分,即从数据库中检索列表,并在下拉列表中显示车辆注册表,供用户选择,我已经设法在可选面板中显示它,以及在Jlabel框中的另一个类中显示它,但我似乎不知道如何在单独的查询类中使用此选定的veh reg,即作为select/where语句的一部分 我
private void populateRegistration() {
try {
// create a connection to database
pst = conn.prepareStatement("SELECT VehicleRegistrationNumber FROM vehicle;");
// create a query to get vehicle regs
rs = pst.executeQuery();
// add vehicle regs to combobox
while (rs.next()) {
jComboBox1.addItem(rs.getString("VehicleRegistrationNumber"));
}
} catch (SQLException ex) {
Logger.getLogger(Login_GUI.class.getName()).log(Level.SEVERE, null, ex);
}
这是另一个GUI类中的代码,该类在对话框中显示此车辆注册,然后在GUI中的文本字段中显示:
public ArrayList<String> getTableContent()
{
DatabaseConnection db = new DatabaseConnection();
try {
//Sql Return Statement
String newQuery= "SELECT P.PatientFirstName, P.PatientLastName, P.PatientHouseNumber, P.PatientStreetName, P.PatientPostcode, P.PatientBreathing, P.ProblemInformation, C.AMPDSCategory, \n" +
"I.NumberHurt,T.TaskClosed, H.HospitalSpaceAvailable, H.HospitalName, H.HospitalPostcode, V.VehicleRegistrationNumber, EM.DateTimeReported\n" +
"FROM Patient AS P\n" +
"JOIN Category AS C\n" +
"ON C.Category_ID = P.CategoryID\n" +
"--AND P.Patient_ID = 2\n" +
"JOIN Incident AS I\n" +
"ON I.Incident_ID = P.IncidentID\n" +
"JOIN TASK AS T\n" +
"ON T.IncidentID = I.Incident_ID\n" +
"JOIN Hospital AS H\n" +
"ON H.Hospital_ID = T.HospitalID\n" +
"JOIN Vehicle AS V\n" +
"ON T.Task_ID = V.TaskID\n" +
"JOIN ECCPersonnel AS EC\n" +
"ON I.ECCPersonnelID = EC.ECCPersonnel_ID\n" +
"JOIN EmergencyCall AS EM\n" +
"ON EC.CallID = EM.Call_ID\n" +
"WHERE T.Task_ID=1" +
"--WHERE V.VehicleRegistrationNumber = '?'";
public ArrayList getTableContent()
{
DatabaseConnection db=新建DatabaseConnection();
试一试{
//Sql返回语句
String newQuery=“选择P.PatientFirstName、P.PatientLastName、P.PatientThreetName、P.PatientPostcode、P.PatientBreathing、P.ProblemInformation、C.AMPDSCategory,\n”+
“I.NumberHurt,T.TaskClosed,H.HospitalSpaceAvailable,H.HospitalName,H.HospitalPostcode,V.VehiclerRegistrationNumber,EM.DateTimeReported\n”+
“来自作为P的患者\n”+
“以C身份加入类别\n”+
“在C.Category\u ID=P.CategoryID上\n”+
“--和P.Patient_ID=2\n”+
“以I身份加入事件\n”+
“在I.Incident_ID=P.IncidentID上\n”+
“以T身份加入任务\n”+
“在T.IncidentID=I.IncidentID\u ID上\n”+
“以H身份加入医院\n”+
“在H.Hospital\u ID=T.HospitalID上\n”+
“以V身份加入车辆\n”+
“在T.Task_ID=V.TaskID上\n”+
“以EC身份加入ECC人员\n”+
“在I.ECCPersonnelID=EC.ECCPersonnelID上\n”+
“将EmergencyCall作为EM加入\n”+
“ON EC.CallID=EM.Call\u ID\n”+
“其中T.Task_ID=1”+
“--其中V.VehiclerRegistrationNumber='?'”;
我知道SQL很难看,但它可以工作,所以如果有时间,我会在以后对它进行改进。我相信我需要定义?但不知道如何将?引用到vehReg值!!首先,你应该一直关闭你打开的内容。因此在
populateRegistration()
中,不要忘记rs.close()
和pst.close()
在将?引用到vehReg
的旁边,创建一个PreparedStatement
,并调用其setString
方法(假设vehReg是一个字符串)
(try
、catch
、声明和实际读取为简洁起见而编写)
请记住,列的编号从1开始。您应该发布一些您已经完成的代码。请发布让您感到困惑或无法解决的代码。关于noob问题,不要担心,老师会责骂我们,这并不意味着他们想伤害我们,他们只想让我们变得完美。我上传了两个课程的代码,第一组代码来自login_GUI,第二组代码来自第二个GUI。我只希望能够在SQL查询中使用vehReg的值,如果可能的话,可以在其他类(如库存、状态和任务类)中使用vehReg的值,因此我将其添加到Arraylist中。我在这里研究了其他类似问题,包括这个()但是我似乎遗漏了一些东西,因为我无法让它工作!只需创建一个静态arraylist,用您想要的值初始化它,然后在另一个类中使用类名调用它。太好了,非常感谢。结束语句在我的待办事项列表中,所以谢谢您,这将节省我一些时间。
pst = conn.prepareStatement(newQuery);
pst.setString(1, vehReg);
rs = pst.executeQuery();