0

我是 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:
4

1 回答 1

1

您实际上并没有将变量传递到您的 SQL INSERT 中String,因此很有可能抛出异常但未在空异常块中报告。在这种情况下,表将是空的,产生任何空值executeQuery

st.executeUpdate("insert into emp values(" + eno "," + sal + ",'" + name + "','" + dept + "');");

也不要让可能的SQLException事情默默发生,添加

catch (SQLException sqle) {
   sqle.printStackTrace();
}

最好使用 aPreparedStatement来防止SQL 注入攻击。

于 2013-04-13T15:10:56.787 回答