当前页面: 开发资料首页 → 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
再顶一次!