Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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中接受日期类型命令行参数_Java_Date_Command Line Arguments_Hsqldb - Fatal编程技术网

在java中接受日期类型命令行参数

在java中接受日期类型命令行参数,java,date,command-line-arguments,hsqldb,Java,Date,Command Line Arguments,Hsqldb,我正试图编写一个实践CRUD应用程序。这是一个应用程序,用于存储带有出生日期等信息的联系人。因为我使用命令行接受输入,并将其存储在HSQLDB数据库中,所以我不确定如何接受Datetype参数。我尝试将其解析为long from Sting,但它一直抛出SQLDataException 这里是我用于这个变量的代码行 //this in the class with main private Date dob; public Date getDob() { return

我正试图编写一个实践CRUD应用程序。这是一个应用程序,用于存储带有出生日期等信息的联系人。因为我使用命令行接受输入,并将其存储在HSQLDB数据库中,所以我不确定如何接受
Date
type参数。我尝试将其解析为long from Sting,但它一直抛出
SQLDataException

这里是我用于这个变量的代码行

//this in the class with main

    private Date dob;

    public Date getDob() {
    return dob;
        }



    public void setDob(Date dob) {
            this.dob = dob;
        }

    System.out.println("Enter date of birth of "+n+" in the format dd/mm/yyyy
    String date = sc2.nextLine();
    long d = Date.parse(date);
    uv.setDob(d);

//class with all the business logic

public void addContact(String cb, String name, long dob, String email, String phno, String tag) {
sql = "insert into "+ cb + "(name,dob,email,phone,tag) values (?,?,?,?,?)";
 try {
    con = JDBCHelper.getConnection();
    ps1 = con.prepareStatement(sql);
    ps1.setString(1, name);
    ps1.setLong(2, dob);
    ps1.setString(3, email);
    ps1.setString(4,phno);
    ps1.setString(5, tag);
 }   
 catch(SQLException e) {
    e.printStackTrace();
 }

}
输入日期时它给我的例外是

java.sql.SQLSyntaxErrorException: incompatible data type in conversion
        at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
    at org.hsqldb.jdbc.Util.throwError(Unknown Source)
    at org.hsqldb.jdbc.JDBCPreparedStatement.setParameter(Unknown Source)
    at org.hsqldb.jdbc.JDBCPreparedStatement.setLongParameter(Unknown Source)
    at org.hsqldb.jdbc.JDBCPreparedStatement.setLong(Unknown Source)
Caused by: org.hsqldb.HsqlException: incompatible data type in conversion
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.types.DateTimeType.convertJavaToSQL(Unknown Source)
你必须创建一个新的。构造函数需要很长时间,所以您应该很好

ps1.setDate(2, new java.sql.Date(dob));
你必须创建一个新的。构造函数需要很长时间,所以您应该很好

ps1.setDate(2, new java.sql.Date(dob));

要分析迄今为止的字符串,您可以使用该类,例如:


然后,您可以使用。

setDate(int,Date)
方法来解析字符串,直到您可以使用该类的日期,例如:


然后,您可以使用的
setDate(int,Date)
方法。

首先使用SimpleDataFormat解析日期,并确保输入的格式符合您的要求。然后可以在准备好的语句中使用相同的值


首先使用SimpleDataFormat解析日期,并确保输入的格式符合您的要求。然后可以在准备好的语句中使用相同的值


对于任意日期格式,使用
SimpleDataFormat
获取
java.util.date
,然后将其转换为JDBC日期:
java.sql.date sqlDate=new java.sql.date(date.getTime())
。对于SQL兼容格式(yyyy-MM-dd),有
java.SQL.Date.valueOf(String)
helper。

对于任意日期格式,使用
SimpleDateFormat
获取
java.util.Date
,然后将其转换为JDBC日期:
java.SQL.Date sqlDate=new java.SQL.Date(Date.getTime())
。对于SQL兼容格式(yyyy-MM-dd),有
java.SQL.Date.valueOf(String)
helper。

我确实尝试了这一点1。但是当setDate(int,Date)要求将日期从java.util.Date转换为java.sql.Date&然后抛出java.lang.ClassCastException:java.util.Date不能转换为java.sql.Date,正如上面提到的:java.sql.Date sqlDate=new java.sql.Date(Date.getTime()))无法工作…表示无法将其从java.util.Date更改为java.sql.Date…引发异常java.sql.Date sqlDate=new java.sql.Date(Date.getTime()),然后在准备的语句中使用新的sqlDate。我尝试了此1。但是当setDate(int,Date)要求将日期从java.util.Date转换为java.sql.Date&然后抛出java.lang.ClassCastException:java.util.Date不能转换为java.sql.Date,正如上面提到的:java.sql.Date sqlDate=new java.sql.Date(Date.getTime()))无法工作…表示无法将其从java.util.Date更改为java.sql.Date…引发异常java.sql.Date sqlDate=new java.sql.Date(Date.getTime()),然后在准备的语句中使用新的sqlDate。