首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用JDBC在数据库中插入引用值?

如何使用JDBC在数据库中插入引用值?
EN

Stack Overflow用户
提问于 2011-08-21 18:51:31
回答 2查看 1.5K关注 0票数 1

我试图使用下面的代码将值插入Oracle 10g数据库,但在执行时出现了“缺失表达式”的错误。我必须将引用值传递到insert子句中,但不知道确切的语法或方法。请帮我渡过难关。谢谢。

学生表:-

代码语言:javascript
复制
                      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

代码:

代码语言:javascript
复制
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);
     } 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-21 19:00:41

当前,SQL语句如下所示:

代码语言:javascript
复制
insert into student (sid, pass_word, ...) values (studentID, spassword, ...)

变量名对SQL本身没有任何意义。

你应该用一份准备好的声明。例如,您的SQL应该如下所示:

代码语言:javascript
复制
insert into student (sid, pass_word, ...) values (?, ?, ...)

然后你用:

代码语言:javascript
复制
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, studentID);
stmt.setString(2, spassword);

// etc

有关更多信息,请参见关于准备语句的JDBC教程

票数 5
EN

Stack Overflow用户

发布于 2011-08-21 19:01:23

为了安全起见,你应该使用预先准备好的语句。

准备查询字符串

代码语言:javascript
复制
String updateString = "update " + dbName + ".COFFEES " +
                      "set SALES = ? where COF_NAME = ?";

使用此查询创建一个PrepartedStatement:

代码语言:javascript
复制
updateSales = connnection.prepareStatement(updateString);

填好吗?有你价值的空间持有者:

代码语言:javascript
复制
updateSales.setInt(1, myVariable1);
updateSales.setString(2, myVariable2);

执行查询

代码语言:javascript
复制
updateSales.executeUpdate();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7140345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档