回覆列表
  • 1 # 弗學漫話

    這個問題的原因可能不止一個,看到同行回答的也都有道理,但有道理的不一定能解決這個問題,我從實際的應用情況,說明一下碰到的這個問題,或許也是一種啟發。

    Access資料庫也稱為桌面型的資料庫,是Microsoft Office的一個元件,全稱為Microsoft Office Access,這個資料庫建立比較簡單,建資料表時對主鍵沒有特殊的要求,對於沒有建主鍵的資料表,當你在用Access所帶的VBA語言進行開發時,使用SQL語言進行相關的操作是沒有問題的。

    但是,當你用其他語言連線到Access資料庫時,一定要注意,有些語言一定要在有主鍵的情況下才能進行SQL語句操作,不然就有可能表面操作成功,而實際上沒有任何改變。

    對於JAVA我不太熟悉,只此是一點開發過程中的經驗而已,僅作參考。

  • 2 # 自學JAVA

    題主給的問題描述太過簡短,那麼答主只能根據自己理解的方向來說說可能出現錯誤的原因:

    程式碼的原因

    一般情況下Java連線資料庫用的都是jdbc,不知道題主的用最基本的jdbc去寫的連線access還是使用框架去配置連線的。

    使用框架做配置連線

    題主也提到了查詢能正常查詢,那就證明配置資訊內容是完全沒有問題的,能夠正常使用。那這樣的話有可能你做增,刪,改的的時候對應的資料本來是沒有刪除,你的判斷寫的有問題導致,但是這個可能性應該不大。那就可能是sql語句的問題了,下面在詳細的說話sql語句的問題。

    使用最原始的jdbc操作

    能在增刪改上面成功,沒有報錯那證明你的程式碼敲的是對的,但是你的對應的引用相互呼叫多次,可能導致錯誤,打個比喻:Connection conn=new Connection(連線資料庫的字串);

    Statement sta=conn.createStatement();

    String sql="新增sql語句";

    int count=sta.excute(sql);

    然後在下面你可能在次用到Statement物件:

    int count=sta.excute(sql);

    這個時候你多次使用同一個Statement物件很大可能會出現異常

    在可能是你操作的資料庫和你檢視的資料庫不是同一個,剛好都用同樣的表格:

    比如:

    Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/exam?characterEncoding=UTF-8","root", "admin");

    你現在操作的是exam資料庫裡面的表格,但是你現在檢視的卻是其它資料庫;這個可能性也有但是估計也不大。

    jdbc和比較傳統的hibernatesql語句的問題

    如果你是用框架是做的那很大的可能是你配置的sql語句做的是無用操作,什麼是無用操作呢?現在資料庫裡面已經沒有了學號為1的學生,但是你還刪除這條資料,資料庫肯定沒有反應。不排除有這種可能但是機率比較小。也有可能你傳遞過來的刪除,修改的條件的條件資料,出現問題也有可能導致刪除或者修改失敗。

    如果你是用jdbc去做的,那很有可能sql語句編寫有問題,因為sql語句的字串拼接其中有很多“ ”和‘ ’的拼接:

    比如上圖看到的,ssex這個欄位在資料庫中是一個字元型別,所以在sql語句中需要用‘ ’括起來,這裡還要拼一個獲取過來的條件。所以‘ ’和“ ”之間的拼接真的很容易出問題。

  • 中秋節和大豐收的關聯?
  • 為什麼說吉利繽瑞的發動機是同排量最強?