在数据库中保存空值

时间:2015-04-12 00:04:43

标签: java mysql

我正在尝试使用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();

   }

}

1 个答案:

答案 0 :(得分:0)

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

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

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

另外:java语言有约定,变量名称是小写的,你应该坚持下去。