首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

java程序 怪有关问题

2012-02-28 
java程序 怪问题Java codepublic static void main(String[] args) throws Exception{String driverClassN

java程序 怪问题

Java code
public static void main(String[] args) throws Exception{       String driverClassName="com.ibm.db2.jcc.DB2Driver";       String url="jdbc:db2://localhost:50000/TESTDB";       Class.forName(driverClassName);       Connection conn=DriverManager.getConnection(url, "test", "test");       String sql="select count(*) from T_USER where USER_ID =?";       PreparedStatement stmt=conn.prepareStatement(sql);       stmt.setString(1, "1234");       ResultSet rs=stmt.executeQuery();       while(rs.next()){           System.out.println(rs.getObject(1));       }       stmt.close();       conn.close();   }  USER_ID定义为3位,如果stmt.setString(1, "123"); 就不会出问题。 或者直接写到SQL里面:String sql="select count(*) from T_USER where USER_ID ='1234'"; 也不会出问题。 但是放在程序里就出问题?我不想用先判断在截取的方法.还有其他的办法吗?


[解决办法]
没什么问题啊
jdbc报错是对的啊,这是你的数据错误,为什么一定要jdbc放弃处理你的错误???太奇怪的要求了

至于你说的为什么写sql和预处理语句处理结果不一样
这个你应该好好去看点基础书籍了
标准sql语句由服务器处理,这个不谈
预处理语句,分为3步
1.提交预编译sql,就是带有参数列表(?)的sql语句,由服务器判断是否是被缓存的指令集
2.提交参数列表,检查所有参数的有效性及安全性
3.执行缓存的指令集

至于为什么要用预编译语句来跑sql,一个最简单的安全考量就是防止sql注入,谁也不想留着sql语句的注入漏洞吧?

热点排行