首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JDBC将数据插入Oracle数据库中的问题

使用JDBC将数据插入Oracle数据库中的问题
EN

Stack Overflow用户
提问于 2011-08-22 17:52:02
回答 3查看 7K关注 0票数 2

我试图在oracle 10g数据库中使用准备好的语句插入数据,但是在执行下面给出的代码时,我得到了"SQL异常:一般错误“。我认为问题要么是日期字段,要么是密码字段数据检索。请帮我渡过难关。谢谢。

学生表:-

代码语言: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
复制
    int bpercent ;
    int twelthpercent;
    int tenthpercent;
    int semester;  
    String studentID = null;
    String studentpassword = null;
    String studentname = null;
    String Gname = null;
    String branch = null;
    String dcompany = null;
    String certify = null;
    String sex = null;
    Date date = new Date(00-00-0000);

    Connection connection = null;

尝试{

代码语言:javascript
复制
// 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 = Integer.parseInt(BtechField1.getText());
twelthpercent = Integer.parseInt(TwelthField.getText());
tenthpercent = Integer.parseInt(TenthField.getText());
semester =Integer.parseInt(SemesterField.getText());
certify = CertificationField.getText();
date =  (Date) DateTextField.getValue();
sex = SexCombo.getActionCommand();



PreparedStatement state = connection.prepareStatement("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(?,?,?,?,?,?,?,?,?,?,?,?,?)");

state.setString(1, studentID);
state.setString(2, spassword.toString());
state.setString(3,studentname);
state.setString(4,Gname);
state.setString(5,branch);
state.setString(6,dcompany);
state.setInt(7,bpercent);
state.setInt(8,twelthpercent);
state.setInt(9,tenthpercent);
state.setInt(10,semester);
state.setString(11,certify);
state.setDate(1, new java.sql.Date(date.getTime())); 
state.setString(12,sex);

state.executeUpdate();
state.close();

 JOptionPane.showMessageDialog(null,"Data Inserted","Information Messgage",JOptionPane.INFORMATION_MESSAGE);
 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

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-22 18:16:40

你得到了认证,而且学期走错了路

在插入sql字符串中:

代码语言:javascript
复制
insert into (... tenth_percent,certify,semester,d_birth, ...)

在您的

代码语言:javascript
复制
state.setInt(9,tenthpercent);
state.setInt(10,semester);
state.setString(11,certify);
state.setDate(12, new java.sql.Date(date.getTime())); 

因此,它尝试将学期列设置为字符串,该字符串无效。

票数 2
EN

Stack Overflow用户

发布于 2011-08-22 17:55:28

我相信你有一个错误,你有:

代码语言:javascript
复制
state.setDate(1, new java.sql.Date(date.getTime())); 
state.setString(12,sex);

我觉得你想:

代码语言:javascript
复制
state.setDate(12, new java.sql.Date(date.getTime())); 
state.setString(13,sex);
票数 3
EN

Stack Overflow用户

发布于 2011-08-22 18:02:35

而不是使用行:

代码语言:javascript
复制
`String driverName = "sun.jdbc.odbc.JdbcOdbcDriver";    
Class.forName(driverName);`

使用这一行:

DriverManager.registerDriver(新sun.jdbc.odbc.JdbcOdbcDriver);

有时,驱动程序管理器无法读取类,因此需要向驱动程序管理器注册驱动程序。

祝你好运!

井!密码里有个错误..。相反:

DriverManager.registerDriver(新sun.jdbc.odbc.JdbcOdbcDriver);

使用:

新sun.jdbc.odbc.JdbcOdbcDriver()); (

DriverManager.registerDriver)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7151436

复制
相关文章

相似问题

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