站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题如何用JAVA语句实现字符或者其他类型的数据输入?

如何用JAVA语句实现字符或者其他类型的数据输入?

摘要: 如何用JAVA语句实现字符或者其他类型的数据输入?


我想用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或者其它类型应该怎么办?请高手指教,小弟是初学者,谢谢!


可以看看www.9i5e.com的例子


郁闷,自己顶!


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


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’前面的引號。



怎么会这样?没有人帮我吗?有没有高手指点一下在引号内引用变量的方法?


自己再顶!


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


F:/java>javac selectHR_employee.java

F:/java>java selectHR_employee
Please Enter the EmpID:
21308

Exception in thread "main"java.sql.SQLException:[Microsoft][ODBC SQL Server Dr
iver][SQL Server]遺漏字元串'21308'

我也是那样想的,可是执行时出现上面的错误!


这要看你的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);


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



.
.
.
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);

已经测试通过的,你自己再试试。。


up


zunshanke2004() ( ) 信誉:100


已经成功!谢谢!


zunshanke2004() ( ) 信誉:100


不过又有一个问题,当我输入别人的工号时却查不到!



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

































































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+"';




如果是字符需要加''
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'




qingyuan18(zealot_tang)

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



我用System.out.println(sql);语句输出得到的SQL命令为:
select EmpID,EmpName,Birthday,IDcard,CardNo,EmerAddress from HR_employee where EmpID='21308


为什么会少一个单引号?我明明加进去了呀?????


root4137(超人) ( ) 信誉:100 Blog

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


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


有记录的!只是我在查询分析器可以查的到(加不加引号都可以查到),我现在主要是想搞清楚那个单引号为什么加不进去?


System.in


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


up


再顶一次!


↑返回目录
前一篇: 请问嵌套类与继承类有何区别
后一篇: JAVA连接ORACLE8I时报错:java.sql.SQLException: Io 异常