[英]Values from database using jdbc showing null values
我是JDBC的初学者。 我写了以下代码,我检查了表中的值是否正确插入?我不知道我在哪里错了?
import java.io.*;
import java.sql.*;
class Emp
{
int eno,sal;
String name,dept;
Connection cn=null;
Statement st=null;
ResultSet rs=null;
Emp()
{
try
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter Employee number:");
eno=Integer.parseInt(br.readLine());
System.out.println("Enter salary:");
sal=Integer.parseInt(br.readLine());
System.out.println("Enter name:");
name=(br.readLine());
System.out.println("Enter Department:");
dept=(br.readLine());
Class.forName("com.mysql.jdbc.Driver");
cn=DriverManager.getConnection("jdbc:mysql://localhost:3306/employee","root","");
if(cn==null)
System.out.println(" error in connection");
st=cn.createStatement();
st.executeUpdate("insert into emp values(eno,sal,name,dept);");
System.out.println("Record Inserted");
rs=st.executeQuery("select * from emp");
rs.first();
System.out.println("Employee table");
while(!rs.isLast())
{
System.out.println("Eno:"+rs.getInt(1)+"sal:"+rs.getInt(2)+"name:"+rs.getString(3)+"dept:"+rs.getString(4));
rs.next();
}
}
catch(Exception e){}
}
public static void main(String args[]) throws Exception
{
Emp e=new Emp();
}
}
问题是输出显示如下
Eno:0sal:0name:dept:
Eno:0sal:0name:dept:
Eno:0sal:0name:dept:
Eno:0sal:0name:dept:
Eno:0sal:0name:dept:
您实际上并未将变量传递到SQL INSERT String
因此很有可能引发了异常,但未在空异常块中报告该异常。 在这种情况下,该表将为空,从而在任何executeQuery
上产生空值
st.executeUpdate("insert into emp values(" + eno "," + sal + ",'" + name + "','" + dept + "');");
也不要让可能的SQLException
静默发生,添加
catch (SQLException sqle) {
sqle.printStackTrace();
}
最好使用PreparedStatement
防止SQL注入攻击。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.