我正在尝试使用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();
}
}
答案 0 :(得分:0)
代码示例不完整。然而,可以看出,您收集了一些变量,如EventName
和Location
,稍后您将values
发送到insert方法,但这些值永远不会被填充。
您更新的问题证明:Java中的字符串是不可变的,您无法在创建后更改它。分配完成后,不会再次评估值。 在分配时,用于填充它的所有变量都为空。
要立即解决您的问题,请在调用insert-method之前分配值。
要改进您的程序,请使用方法saveEvent()
编写一个类DAO,该方法以EventVO
为参数。
EventVO
包含所有收集的值作为属性。
save方法将创建sql neccessary以插入或更新事件。
另外:java语言有约定,变量名称是小写的,你应该坚持下去。