我想用JAVA来实现一个查询功能,用户可以输入查询的条件,比如工号、姓名等,代码如下:
import java.io.*;
import java.sql.*;
public class selectHR_employee
{
public static void main(String args[]) throws Exception
{
byte aArray[]=new byte[128];
System.out.println("Please Enter the EmpID:");
System.in.read(aArray);
String id=new String(aArray);
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection("jdbc:odbc:SQLServer","","");
Statement stmt=conn.createStatement();
ResultSet rst=stmt.executeQuery("select EmpID,EmpName,Birthday,IDcard,CardNo,EmerAddress from HR_employee where EmpID=id");
while(rst.next())
{
  System.out.println(rst.getString(1)+" "+rst.getString(2)+" "+rst.getString(3)
  +" "+rst.getString(4)+" "+rst.getString(5)+" "+rst.getString(6));
  }
rst.close();
conn.close();
}
}其中id用来记录输入数据,这样写不知对不对?
                   byte aArray[]=new byte[128];
System.out.println("Please Enter the EmpID:");
System.in.read(aArray);
String id=new String(aArray);
这样id变量为一字符串,在SQL查询中加了where EmpID=id,可是执行时提示错误,Exception in thread "main" java.sql.SQLException: [Microsoft][ODBC SQL Server Dr
iver][SQL Server]無效的資料行名稱 'id'。
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
        at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
        at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(Unknown Source)
        at sun.jdbc.odbc.JdbcOdbcStatement.execute(Unknown Source)
        at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(Unknown Source)
        at selectHR_employee.main(selectHR_employee.java:15)请问该怎么写?如果要查询的是int或者其它类型应该怎么办?请高手指教,小弟是初学者,谢谢!

解决方案 »

  1.   

    ResultSet rst=stmt.executeQuery("select EmpID,EmpName,Birthday,IDcard,CardNo,EmerAddress from HR_employee where EmpID='"+id+"'");
      

  2.   

    F:\java>java selectHR_employee
    Please Enter the EmpID:
    21308
    Exception in thread “main” java.sql.SQLExceiption:[Microsoft][ODBC SQL Server Driver][SQL Server]遺漏字元字串’21308’前面的引號。
      

  3.   

    ResultSet rst=stmt.executeQuery("select EmpID,EmpName,Birthday,IDcard,CardNo,EmerAddress from HR_employee where EmpID='"+id+"'");
    不是已经很清楚了吗
      

  4.   

    F:\java>javac selectHR_employee.javaF:\java>java selectHR_employee
    Please Enter the EmpID:
    21308Exception in thread "main"java.sql.SQLException:[Microsoft][ODBC SQL Server Dr
    iver][SQL Server]遺漏字元串'21308'我也是那样想的,可是执行时出现上面的错误!
      

  5.   

    这要看你的id在数据库的类型
    你不妨先在数据库里执行
    select EmpID,EmpName,Birthday,IDcard,CardNo,EmerAddress from HR_employee where EmpID='id'
    若通过则
    ResultSet rst=stmt.executeQuery("select EmpID,EmpName,Birthday,IDcard,CardNo,EmerAddress from HR_employee where EmpID='"+id+"'");
    若id字段为number
    select EmpID,EmpName,Birthday,IDcard,CardNo,EmerAddress from HR_employee where EmpID=id
    ResultSet rst=stmt.executeQuery("select EmpID,EmpName,Birthday,IDcard,CardNo,EmerAddress from HR_employee where EmpID="+id);
      

  6.   

    EmpID字段在数据库中是字符型.在查询分析器中可以执行:
    select EmpID,EmpName,Birthday,IDcard,CardNo,EmerAddress from HR_employee where EmpID='21308'
      

  7.   

    .
    .
    .
    1.String sql="select EmpID,EmpName,Birthday,IDcard,CardNo,EmerAddress from   
         HR_employee where EmpID="+s;
    2.System.out.println(sql);
    3.ResultSet rst=stmt.executeQuery(sql);已经测试通过的,你自己再试试。。
      

  8.   

    zunshanke2004() ( ) 信誉:100    
    已经成功!谢谢!
      

  9.   

    zunshanke2004() ( ) 信誉:100    
    不过又有一个问题,当我输入别人的工号时却查不到!
      

  10.   


    F:\java>java selectHR_employee
    Please Enter the EmpID:
    21308
    select EmpID,EmpName,Birthday,IDcard,CardNo,EmerAddress from HR_employee where E
    mpID=21308
      

  11.   

    select EmpID,EmpName,Birthday,IDcard,CardNo,EmerAddress from HR_employee where EmpID=id
    这条sql有错,你的EmpID字段是什么类型? Int?varchar?是数值的话
    int id = 1;
    String sql = "select EmpID,EmpName,Birthday,IDcard,CardNo,EmerAddress from HR_employee where EmpID="+id;即可如果是字符需要加''
    String id = "001";
    String sql = "select EmpID,EmpName,Birthday,IDcard,CardNo,EmerAddress from HR_employee where EmpID='"+id+"';
      

  12.   

    如果是字符需要加''
    String id = "001";
    String sql = "select EmpID,EmpName,Birthday,IDcard,CardNo,EmerAddress from HR_employee where EmpID='"+id+"';按照你这种写法就会出现下面的提示:Exception in thread "main"java.sql.SQLException:[Microsoft][ODBC SQL Server Dr
    iver][SQL Server]遺漏字元串'21308'
      

  13.   

    qingyuan18(zealot_tang) 是 nvarchar型,用
    String sql = "select EmpID,EmpName,Birthday,IDcard,CardNo,EmerAddress from HR_employee where EmpID="+id;
    可以查到,可是输入别的工号就查不到了,真是邪!
    我看资料上写如果是字符型应该这样:"sel.......where EmpID="+"'"+id+"'";我也觉得是这样,可是执行却现出什么遗漏引号!
      

  14.   

    我用System.out.println(sql);语句输出得到的SQL命令为:
    select EmpID,EmpName,Birthday,IDcard,CardNo,EmerAddress from HR_employee where EmpID='21308
    为什么会少一个单引号?我明明加进去了呀?????
      

  15.   

    root4137(超人) ( ) 信誉:100    Blog 你的问题看的不太明白,怎么输入别人的工号就不查不到呢?既然能够执行就说明程序没有问题,输入别人的工号时,查不到结果,应该是你的数据库中没有这条记录吧!是不是你哪里多了个空格了?你在查询分析器里把System.out.println(sql);的结果拿去执行一遍看看。
      

  16.   

    String sql = "select EmpID,EmpName,Birthday,IDcard,CardNo,EmerAddress from HR_employee where EmpID='"+id+"'";
      

  17.   

    gefengxztg(戈峰) 
    我测试了一下,问题就出在System.int.read(aArray)上!请指教!