Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将java中的文本条目(char)转换为整数以在java数据库中使用_Java_Sql_Database_Netbeans_Integer - Fatal编程技术网

将java中的文本条目(char)转换为整数以在java数据库中使用

将java中的文本条目(char)转换为整数以在java数据库中使用,java,sql,database,netbeans,integer,Java,Sql,Database,Netbeans,Integer,我正在为一个学校项目(Matric PAT)制作一个数据库系统,在这个项目中,我必须用java制作一个数据库(为此我使用netbeans),然后我必须创建一个java程序,该程序连接到数据,并能够执行特定任务,如更改数据库中的数据、显示数据等 我正在创建一种方法来添加一个新条目,我制作了一个Jframe表单(GUI),我用它来做条目,到目前为止一切都正常,只是当我尝试添加条目时,它说我不能将char变量类型放入一个变量类型为整数的列中。我觉得我什么都试过了,但我不知道怎么解决这个问题 以下是我的

我正在为一个学校项目(Matric PAT)制作一个数据库系统,在这个项目中,我必须用java制作一个数据库(为此我使用netbeans),然后我必须创建一个java程序,该程序连接到数据,并能够执行特定任务,如更改数据库中的数据、显示数据等

我正在创建一种方法来添加一个新条目,我制作了一个Jframe表单(GUI),我用它来做条目,到目前为止一切都正常,只是当我尝试添加条目时,它说我不能将char变量类型放入一个变量类型为整数的列中。我觉得我什么都试过了,但我不知道怎么解决这个问题

以下是我的SQL语句,用于为我正在处理的数据库生成表:

CREATE TABLE tblPatients
(
Patient_ID integer NOT NULL,
First_Name varchar(25) NOT NULL,
Last_Name varchar(25) NOT NULL,
Date_Of_Birth date,
Sex varchar (6),
Address varchar(25),
City varchar(25),
PostalCode varchar (4),
Charge integer,
Paid BOOLEAN,
Doctor_ID integer NOT NULL,
PRIMARY KEY (Patient_ID),
FOREIGN KEY (Doctor_ID) REFERENCES tblDoctors(Doctor_ID)
)
这是我用来向数据库添加条目的代码:

 private void btnAddPatientActionPerformed(java.awt.event.ActionEvent evt) {                                              
   try
   {
        String url = "jdbc:derby://localhost:1527/PAT_DB";

        //Only use these if the database has a username or password
        //String username = "";
        //String password = "";

        Connection con = DriverManager.getConnection(url);
        Statement stmt = con.createStatement();

        String Query = "INSERT INTO TBLPATIENTS (PATIENT_ID, FIRST_NAME, LAST_NAME, DATE_OF_BIRTH, SEX, ADDRESS, CITY, "
                + "POSTALCODE, CHARGE, PAID, DOCTOR_ID) VALUES ('"+PatientID_field.getText()+"', "
                + "'"+FirstName_field.getText()+"', '"+LastName_field.getText()+"', "
                + "'"+day_field.getSelectedItem()+month_field.getSelectedItem()+year_field.getSelectedItem()+"',"
                + " '"+Sex_field.getSelectedItem()+"', '"+Address_field.getText()+"', '"+City_field.getText()+"',"
                + " '"+PostalCode_field.getText()+"', '"+Charge_field.getText()+"',"
                + " '"+Paid_field.getSelectedItem()+"', '"+DoctorID_field.getText()+"')"; 

        stmt.execute(Query);

        JOptionPane.showMessageDialog(null, "Patient added to the database.");

        PatientID_field.setText(null);
        FirstName_field.setText(null);
        LastName_field.setText(null);
        day_field.setSelectedItem("00");
        month_field.setSelectedItem("00");
        year_field.setSelectedItem("0000");
        Sex_field.setSelectedItem("0");
        Address_field.setText(null);
        City_field.setText(null);
        PostalCode_field.setText(null);
        Charge_field.setText("0");
        Paid_field.setSelectedItem(0);
        DoctorID_field.setText(null);        


   }

   catch(SQLException ex)
   {
       JOptionPane.showMessageDialog(null, ex.toString());
   }

}          

我想添加我的GUI图片和收到的错误消息,但我还没有足够的rep,不过这是错误消息:“java.sql.SQLSyntaxErrorException:INTEGER类型的列不能包含CHAR类型的值。”

您在语句中输入的一些值被单引号包围。例如,这一行:

            + " '"+PostalCode_field.getText()+"', '"+Charge_field.getText()+"',"
并非所有数据库都接受由单引号括起的值作为整数/数字的有效值,因此这应该是:

            + " '"+PostalCode_field.getText()+"', "+Charge_field.getText()+","

但我不得不强烈建议你改用a。构建这样的语句易于SQL注入,并且使代码难以读取和调试。准备好的语句也会根据值的类型为您处理单引号。

我注意到的第一件事是,您正在将
PatientID\u field.getText()以单引号形式传递给MySQL,而它被声明为
INTEGER
。您可能有其他具有相同问题的字段;我没有费心去寻找这种类型的所有问题。我建议您在使用前打印出
Query
的值。然后,您可以看到您在哪里提供了一个字符串,其中
INSERT
语句需要一个整数。

检查一下如何将
char
转换为
int
:哦,我的上帝,非常感谢您!这是一件很小的事情,但我没有真正注意到区别。这真的帮助很大!我的朋友建议我把所有的东西都打印出来,这样我就可以弄清楚到底发生了什么,但我不太确定该怎么做,但这真的很有帮助!非常感谢。