繁体   English   中英

在数据库中保存空值

[英]saving null values in database

我正在尝试使用下面的Java代码创建一个事件。 但是,在输入之后,我需要检查数据库以查找包含空值的所有字段。 我该怎么办? 先感谢您。

public void CreateEvent(User U){

    try{
        BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
        String d;
        //getting inputfrom the user
        System.out.print("Event Name \n");
        d = inFromUser.readLine();
        EventName = d;

        System.out.println("Kindly Provide the start date(Format dd/MM/yyyy HH:mm)");
        //parsing date from user using SimpleDateFormat
        date = sdf.parse(inFromUser.readLine());
        startDate = date.toString();


        System.out.println("Kindly Provide the end date(Format dd/MM/yyyy HH:mm)");
        date = sdf.parse(inFromUser.readLine());
        d = date.toString();
        endDate = d;


        System.out.println("Where is the event:");
        d = inFromUser.readLine();
        Location= d ;

        System.out.println("Description");
        d = inFromUser.readLine();
        Description= d;

        //Get creator UserName
        Creator = U.FullName;

        MyJDBC.Insert(TableName, Fields, Values);


    }
    catch (IOException ex) {//catch the exception

        ex.printStackTrace();
    }
    catch (ParseException e) {

        e.printStackTrace();
    }

}

值是这个

String Values= "'"+EventName+"','"+Location +"','"+Description+"','"+startDate+"','"+endDate+"','"+Creator+"'";

这是JDBC插入方法

public void Insert(String TableName,String Fields, String Values){

   try {

       conn = DriverManager.getConnection(DB_URL, USER, PASS);
       stmt = conn.createStatement();

       String sql = "INSERT INTO " + TableName+ " (" +Fields+ ") VALUES ("+ Values+ ")" ;
       stmt.execute(sql); 
       System.out.println("Successfully inserted record into database");
       stmt.close();
   }
   catch(SQLException se){
           se.printStackTrace();

   }

}

代码示例不完整。 但是,可以看到的是,您收集了一些变量,例如EventNameLocation ,然后EventName values发送到insert方法,但是这些值永远不会被填充。

您更新的问题证明:Java中的字符串是不可变的,创建后无法更改。 分配完成后,将不会再次评估值。 在分配它时,用于填充它的所有变量均为null。

要立即解决您的问题,请在调用插入方法之前立即分配值。 为了改善您的程序,请编写一个类类DAO,该类具有方法saveEvent() ,该方法将EventVO作为参数。 EventVO包含所有收集的值作为属性。 save方法将创建插入或更新事件所需的sql。

另外:Java语言有一个约定,变量名是小写的,您应该坚持这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM