簡體   English   中英

如何使用java在sql中的datetime列中插入null值

[英]how to insert null value into datetime column in sql with java

有誰知道如何在sql中的數據庫中將null值設置為datetime列? 我嘗試將String設置為null: String date = null; 但我會得到這個錯誤:

java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]Conversion failed when converting datetime from character string

此外,我嘗試通過簡單地聲明它(String date;)來將我的字符串設置為無值。 然而,這最終會將日期設定為1900年1月1日。

我為程序用戶使用了3個下拉框來選擇每個月,日和年。

DateNew newdateprocessed;
int b, c;
String d;

//First I took the values from each drop down box.
b = Date_Processed_Month_Mod.getSelectedIndex(); 
c = Date_Processed_Day_Mod.getSelectedIndex();
d = Date_Processed_Year_Mod.getSelectedItem().toString();                
newdateprocessed = new DateNew(b, c, d);

//Then I used these values in a separate function to put them all together as just one      string
public class DateNew extends Object {
String newdate;
String monthword, newdateword;
int check=0;

public DateNew (int month, int day, String year) {

    //newdate = ""+ month + "/" + day + "/" + year;

    if (month == 0 | day == 0 | year.equals("Year")) {
        newdate=null;
        check = 1;
    }

    else {

        switch (month) {
            case 1: 
                monthword="January";
                break;
            case 2:
                monthword="February";
                break;
            case 3:
                monthword="March";
                break;
            case 4:
                monthword="April";
                break;
            case 5:
                monthword="May";
                break;
            case 6:
                monthword="June";
                break;
            case 7:
                monthword="July"; 
                break;
            case 8:
                monthword="August";
                break;
            case 9:
                monthword="September";
                break;
            case 10:
                monthword="October"; 
                break;
            case 11:
                monthword="November";
                break;
            case 12:
                monthword="December";
                break;

        }

        newdateword= monthword + " " + day + ", " + year; 
        newdate = ""+ month + "/" + day + "/" + year;
    }
    check=month;



}

public String newdate() {
    return newdate;
}

public int newdatecheck(){
    return check;
}

public String newdateword(){
    return newdateword;


}

最后,我將newdateprocessed.newdate()提供給我的數據庫中的列。 如果用戶選擇日期,它會正常工作,但如果他們沒有選擇我會收到錯誤的日期,這就是為什么我試圖找到一種能夠放置空值的方法。

試着打電話

setNull(index,java.sql.Types.DATE)

例如

String query = "UPDATE Licenses Set Date_Processed = ?";
PreparedStatement queryStatement = (PreparedStatement)connection.prepareStatement(sql);
queryStatement.setNull(1, java.sql.Types.Date);

為什么是字符串? 如果是日期時間列,您可以嘗試:

Date date = null;

您似乎將一個字符串傳遞給您的數據訪問代碼,該代碼存儲在datetime列中,因此您依靠DBMS來解釋字符串值並將其轉換為日期時間。 這樣就無法處理空值,因此您將不得不改變執行此操作的方式來實際傳遞兼容的數據類型,如Date實例。

嘗試使用setDate方法(並傳入null)而不是setString方法。

我想出了該怎么做。 我用來更新我的數據庫的查詢最初是這樣的:

String query = "UPDATE Licenses Set Date_Processed = '" + newdateprocessed.newdate() + "'";

我在查詢中取出單引號並將查詢更改為:

String query = "UPDATE Licenses Set Date_Processed =" + newdateprocessed.newdate();

並在我的代碼中設置我的DateNew函數中newdate的值,如果它為null我將其設置為:

newdate = "NULL";

如果不是我將它設置為:

newdate = "'" + month + "/" + day + "/" + year + "'";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM