簡體   English   中英

如何使用JDBC在數據庫中插入參考值?

[英]How to insert reference values in database using JDBC?

我正在嘗試使用以下代碼將值插入Oracle 10g數據庫,但執行時會出現“缺少表達式”錯誤。 我必須將引用值傳遞到insert子句中,但不知道確切的語法或執行方法。 請幫助我。 謝謝。

學生桌:-

                      Sid       VARCHAR2(200) PRIMARY KEY  CHECK(Sid>0),
                      Pass_word VARCHAR2(10) NOT NULL,
                      S_name    VARCHAR2(20) NOT NULL,
                      G_name    VARCHAR2(20)         ,
                      Branch    VARCHAR2(10) NOT NULL,
                      D_company VARCHAR2(20)         ,
                      B_Percent INT NOT NULL CHECK(B_Percent<100),
                      twelth_percent INT NOT NULL CHECK(twelth_percent<100),
                      tenth_percent INT NOT NULL  CHECK(tenth_percent<100),
                      Certify   VARCHAR2(30),
                      Semester  INT NOT NULL CHECK(Semester<9),
                      D_Birth   DATE NOT NULL,
                      Sex       VARCHAR2(6) NOT NULL

碼:

Connection connection = null;

try
{

  // Load the JDBC driver

   String driverName = "sun.jdbc.odbc.JdbcOdbcDriver";

   Class.forName(driverName);

    connection = DriverManager.getConnection("jdbc:odbc:placement","siddharth","sid");

    studentID = StudentID.getText();
    spassword = PasswordField.getPassword();
    studentname = NameField.getText();
    Gname = GuardianField.getText();
    branch = BranchField.getText();
    dcompany = DcompanyField.getText();
    bpercent = BtechField1.getText();
    twelthpercent = TwelthField.getText();
    tenthpercent = TenthField.getText();
    semester = SemesterField.getText();
    certify = CertificationField.getText();
    sex = SexCombo.getActionCommand();
    date =  (Date) DateTextField1.getValue();



    Statement stmt = connection.createStatement();
    stmt.executeUpdate("insert into student " +"(sid,pass_word,s_name,g_name,branch,d_company,b_percent,twelth_percent,tenth_percent,certify,semester,d_birth,sex)"+
                 "values(studentID, spassword,studentname,Gname,branch,dcompany,bpercent,twelthpercent,tenthpercent,certify,semester,date,sex)" );

    stmt.close();
    connection.close();
    }

    catch (ClassNotFoundException e) {
    // Could not find the database driver
      JOptionPane.showMessageDialog(null,e);
    } 
    catch (SQLException e) {
    // Could not connect to the database
      JOptionPane.showMessageDialog(null,e);
     } 

當前,您的SQL語句如下所示:

insert into student (sid, pass_word, ...) values (studentID, spassword, ...)

變量名稱對SQL本身毫無意義。

您應該使用准備好的語句 例如,您的SQL應該如下所示:

insert into student (sid, pass_word, ...) values (?, ?, ...)

然后您使用:

PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, studentID);
stmt.setString(2, spassword);

// etc

有關更多信息,請參見有關准備好的語句JDBC教程

為了安全起見,您應該使用准備好的語句。

准備查詢字符串

String updateString = "update " + dbName + ".COFFEES " +
                      "set SALES = ? where COF_NAME = ?";

使用以下查詢創建PrepartedStatement:

updateSales = connnection.prepareStatement(updateString);

填補 ? 與您保持一致的價值觀:

updateSales.setInt(1, myVariable1);
updateSales.setString(2, myVariable2);

執行查詢

updateSales.executeUpdate();

暫無
暫無

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

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