簡體   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