【发布时间】:2016-05-10 04:45:19
【问题描述】:
这是我在 oracle 中的表:
CREATE TABLE "STUDENT"
( "STU_ID" NUMBER(10,0),
"NAME" VARCHAR2(20),
"MOBILENO" NUMBER(10,0),
"EMAIL" VARCHAR2(50),
"ADDRESS" VARCHAR2(100),
"STREAM" CHAR(50),
"SEMESTER" CHAR(50),
"DATE_OF_BIRTH" DATE,
CONSTRAINT "PK_STU_ID" PRIMARY KEY ("STU_ID") ENABLE
) ;
我想通过在eclipse中按添加按钮将学生信息存储在上表中。尝试执行这行“st.executeUpdate(sql);”时出现缺少表达式错误,代码如下:
JLabel lblAdd = new JLabel(" Add");
lblAdd.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
Clock=new Timer(5000,null);
Clock.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
try {
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@//localhost:1521/XE","ADMIN","admin");
Statement st=con.createStatement();
ResultSet rslt=st.executeQuery("select * from student");
ResultSet stu_seq=st.executeQuery("select student_sequence.nextval from DUAL");
System.out.println("getting resultset");
if(stu_seq.next())
{ System.out.println(stu_seq.getInt(1));
String name=txtNm.getText().trim();
String email=txtEmailid.getText().trim();
String mobile=txtMobileNo.getText().trim();
String sql="INSERT INTO student(STU_ID,NAME,MOBILENO,EMAIL,ADDRESS,DATE_OF_BIRTH,STREAM,SEMESTER) VALUES ("+stu_seq.getInt(1)+",'"+name+"','"+mobile+"','"+email+"',";
sql+="'"+txtPrmntAdd.getText().trim()+"',";
sql+="'"+cmbDay.getSelectedItem()+"'";
sql+="'"+cmbMnth.getSelectedItem()+"'";
sql+="'"+cmbYr.getSelectedItem()+"',";
sql+="'"+cmbRgstrStrm.getSelectedItem()+"',";
sql+="'"+cmbRgstrSem.getSelectedItem()+"',";
sql+=")";
st.executeUpdate(sql);
// System.out.println("after executing");
}
System.out.println("Inserted into database");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
frameReset();
//lblStatus.setText("data saved successfully");
//lblAni.setVisible(false);
Clock.stop();
}
});
Clock.start();
//lblStatus.setVisible(true);
//lblAni.setVisible(true);
}
});
lblAdd.setBounds(172, 340, 60, 18);
panelRegister.add(lblAdd);
lblAdd.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
lblAdd.setForeground(new Color(0, 51, 102));
lblAdd.setFont(new Font("Tw Cen MT", Font.PLAIN, 16));
lblAdd.setIcon(new ImageIcon(Student.class.getResource("/img/Add-New-16.png")));
想要将学生信息存储在表中。我在哪里做错了,所以我得到了缺少表达式的错误?
【问题讨论】:
-
在运行
executeUpdate之前打印出sql字符串的内容,然后手动在数据库上直接运行。它失败了吗?如果是这样,那么您的查询显然是错误的,这似乎正在发生。