日期:2014-05-20  浏览次数:20737 次

用PreparedStatement访问mssql,字符参数类型能否指定是varchar?(用sqljdbc4.jar)
语句:
String sql="select contractNo,contractName,id from iect_Contract where contractName like ? order by contractNo";
st = cnt.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
st.setString(1, "路基%");
ResultSet rs = st.executeQuery();

通过SQL Server Profiler查看

exec sp_prepare @p1 output,N'@P0 nvarchar(4000)',N'select select contractNo,contractName,id from iect_Contract where contractName like @P0 order by contractNo',1

=====================
由于数据表定义的是varchar类型,而参数是N'@P0 nvarchar(4000)' ,所以查询速度会变慢。
有什么参数可以指定为N'@P0 varchar(8000)'呢?

不要叫我换jtds, jtds1.2.x也是nvarchar类型的,除了jtds,就只有sqljdbc4.jar可用了吧

------解决方案--------------------
不能。你可以修改mysql提供的jar包,实现吧。