使用JDBC连接SQL SERVER的数据库后,读取出来的中文数据是乱码?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用JDBC连接SQL SERVER的数据库后,读取出来的中文数据是乱码?相关的知识,希望对你有一定的参考价值。

使用JDBC连接SQL SERVER的数据库后,读取出来的中文数据是乱码
如果可以使用OLEDB连接时,加入Auto Translate=false时就不会出现乱码
但是有些报表软件又不可以使用OLEDB连接
有哪位高手知道怎么解决这个问题呢?

参考技术A 我在给客户服务中,遇到过乱码问题,在连接字串中加入:charset=gb2312,问题解决。但你用的是JDBC连接,他使用的ODBC连接,应该类似,当时的具体情况是:
用户使用DBSync软件做MySQL的数据同步,MySQL的数据库字符集为utf8mb4,连接字符串采用ODBC 3.51,在任务设置的step2,列出的中文数据是乱码,在连接字串中加入:charset=gb2312,问题解决。

怎么使用JDBC连接SQL Server

首先确保SQLSERVER服务正在运行,并可以允许远程访问连接
然后按如下步骤进行连接
1.安装JDBC驱动
1)下载JDBC驱动
http://www.microsoft.com/zh-cn/download/details.aspx?id=11774
2)执行sqljdbc_4.0.2206.100_chs.exe解压驱动文件
3)拷贝以下目录中的sqljdbc_auth.dll到Windows的System32目录。对x64的机子,x64的dll拷到C:\\Windows\\System32,x86的dll拷到C:\\Windows\\SysWOW64目录。
Microsoft JDBC Driver 4.0 for SQL Server\\sqljdbc_4.0\\chs\\auth\\
2.在Java程序中连接SQL Server
classpath中加上安装好的SQL Server jdbc jar包
Microsoft JDBC Driver 4.0 for SQL Server\\sqljdbc_4.0\\chs\\sqljdbc4.jar
连接SQL Server的JDBC代码
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost:54364;databaseName=master;IntegratedSecurity=True";
Connection con = DriverManager.getConnection(url);
在SQL Server Browser服务开启的情况下也可以通过服务名连接
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost\\\\SQLEXPRESS;databaseName=master;IntegratedSecurity=True";
Connection con = DriverManager.getConnection(url);
3.身份验证模式
SQL Server默认使用Windows身份验证模式,这也是官方推荐的模式,安全性更高。上面的连接例子就是采用的Windows认证。如果要使用混合认证模式,需要下载SQL Server Management Studio,并通过SQL Server Management Studio修改认证模式为混合认证模式。
SQL Server Management Studio的下载地址
http://www.microsoft.com/zh-cn/download/details.aspx?id=8961
修改SQL Server认证模式的方法
http://technet.microsoft.com/zh-cn/library/ms188670(v=sql.105).aspx
混合认证模式下,可以由数据库进行认证,连接时需要提供用户名和密码
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost:54364;databaseName=master";
Connection con = DriverManager.getConnection(url,"user","password");
参考技术A 自己看

图文并茂

http://jingyan.baidu.com/article/cbf0e500ed68622eab289356.html本回答被提问者和网友采纳
参考技术B 首先加载数据库驱动,然后调用DriverManager类连接数据库,其次使用PreparedStatement预编译sql语句;具体orcle,与mysql连接就驱动不一样;例如:orcle的
oracle---Class.forName("oracle.jdbc.driver.OracleDriver");
//msql---Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "user", "pwd");

PreparedStatement ps = conn.prepareStatement(sql);

以上是关于使用JDBC连接SQL SERVER的数据库后,读取出来的中文数据是乱码?的主要内容,如果未能解决你的问题,请参考以下文章

java 连接SQL Server

怎么使用JDBC连接SQL Server

怎么使用JDBC连接SQL Server

Java通过JDBC连接SQL SERVER 2017

使用JDBC连接android到SQL Server的正确方法

jdbc连接sql Server 数据库时用的数据库名是指实例名吗?