[英]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.