[英]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();
}
}
代码示例不完整。 但是,可以看到的是,您收集了一些变量,例如EventName
和Location
,然后EventName
values
发送到insert方法,但是这些值永远不会被填充。
您更新的问题证明:Java中的字符串是不可变的,创建后无法更改。 分配完成后,将不会再次评估值。 在分配它时,用于填充它的所有变量均为null。
要立即解决您的问题,请在调用插入方法之前立即分配值。 为了改善您的程序,请编写一个类类DAO,该类具有方法saveEvent()
,该方法将EventVO
作为参数。 EventVO
包含所有收集的值作为属性。 save方法将创建插入或更新事件所需的sql。
另外:Java语言有一个约定,变量名是小写的,您应该坚持这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.