随笔-1  评论-0  文章-0  trackbacks-0
  2007年9月26日
    直接使用Statement,驱动程序一般不会对sql语句作处理而直接交给数据库;
    使用PreparedStament,那么形成预编译的过程,并且会对语句作字符集的转换(至少在sqlserver)中如此。
    如此,有两个好处:对于多次重复执行的语句,使用PreparedStament效率会更高一点,并且在这种情况下也比较适合使用batch;另外,可以比较好地解决系统的本地化问题。
    譬如,在一个原始的英语系统上装好了sqlserver,那么它缺省的字符集是ANSI的Latin字符集;现在我们要将此系统作中文系统用,装好各种语言包,设置好location等等,我们期望用java写的application能够正常显示中文;但是,如果我们使用Statement往sqlserver里面插入中文得到将是编码丢失的问号等;这是因为更改设置以后,我们的字符集是gb2312,而sqlserver字符集没有变,中文串插入数据库中导致什么呢? latin字符集显然只有gb2312的一部分字符,如此导致编码丢失,无法正常显示。
    使用PreparedStatement能够解决这个问题。

posted @ 2007-09-26 15:29 Cherish 阅读(119) | 评论 (0)编辑 收藏
仅列出标题