簡體   English   中英

JAVA或我的IDE的限制或SQL問題?

[英]JAVA or my IDE's limitation or SQL issue?

我已經用Java創建了一個表單,並且正在向數據庫發送一些詳細信息,例如名稱,類型,事件日期,事件時間等。

  • 從我創建的數據庫類中調用conn。
  • 狀態變量在同一文件中聲明(作為全局變量)。

以下是“創建事件”按鈕的代碼:

// Creating Events
    try {
        if (txtType.getText().equals("") || txtDate.getText().equals("") || txtDescription.getText().equals("") || cmbTime.getSelectedIndex() == 0 || txtName.getText().equals("") || cmbColor.getSelectedIndex() == 0 || cmbVenue.getSelectedIndex() == 0) {
            JOptionPane.showMessageDialog(this, "All Fields Are Required To create an Event");
        } else {
            int record = conn.state.executeUpdate("insert into Events values('"+txtCustID.getText()+"','"+txtName.getText()+"','"+txtType.getText()+"','"+cmbColor.getSelectedItem().toString()+"','"+txtDescription.getText()+"','"+cmbVenue.getSelectedItem().toString()+"', '"+txtDate.getText()+"' , '"+cmbTime.getSelectedItem().toString()+"' , GETDATE() )");
            if (record > 0) {
                JOptionPane.showMessageDialog(this, "Event Registered Successfully!");
            } else {
                JOptionPane.showMessageDialog(this, "Event Not Registered!");
            }
        }
    } catch (Exception ex) {
        JOptionPane.showMessageDialog(this, ex.getMessage());
    }

問題:

  1. 朋友的末尾,相同的SQL查詢工作正常,但出現“列數不匹配”錯誤。 SQL數據庫具有所有必填字段(我再次檢查了)。

  2. 我不想在所有組合框中使用“選擇”(作為放置文本),而是希望組合框不顯示任何文本,但我看不到Netbeans中的任何選項。 是JAVA本身還是我的IDE的局限性?

  3. 當前,用戶必須單擊並從組合框中選擇一個項目。 我想在用戶關注它們后立即打開組合框。 有一個名為“ FocusGained”的事件。 在這里使用合適的活動嗎? 一旦獲得焦點,我應該在其中編寫什么以打開組合框?

SQL數據庫映像

  1. 學習使用PreparedStatement ,有關更多詳細信息,請參見使用預處理語句
  2. 使用JComboBox#setSelectedItem類的東西將其傳遞為null ,這將導致JComboBox最初為空。
  3. 是的,請參見JComboBox#showPopup

關於第一個問題,由於我們無權訪問數據庫,因此我們無法判斷,但是您應確保要連接的數據庫是您認為要連接的數據庫。

在您的插入語句中,您還應該指定要插入的列,而不僅是值,因為順序可能會發生變化...例如。

insert into Events (..., ..., ...) values (?, ?, ?)

我也會勸阻您不要使用表單編輯器,學習如何手工編寫UI的代碼,這將使您對UI的工作方式以及將來如何充分利用表單編輯器有更多的了解。

暫無
暫無

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

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