import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class InitReportData { /** * @param args */ public static void main(String[] args) throws SQLException{ // TODO Auto-generated method stub Connection conn = null; Statement stmt = null; String JDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver"; String connectDB="jdbc:sqlserver://localhost:1433;DatabaseName=osi_prod"; String user="sa"; String pwd="123456"; try { // 动态导入数据库的驱动 Class.forName(JDriver); // 获取数据库连接 conn = DriverManager.getConnection(connectDB,user,pwd); String[] series={"中文"}; String[] category={"中文1","中文2",""}; String[][] value={ {"中文3","99.99%",""} }; String tableName="osi_report_DailyProduction"; String type="crosstabDataRight5"; int seriesLen=series.length; int categoryLen=category.length; String sql=""; for(int i=0;i<seriesLen;i++){ for(int j=0;j<categoryLen;j++){ if(value[i][j]!=null){ // 创造SQL语句 sql = "INSERT INTO "+tableName+" (type,series,category,value) VALUES (N'"+type+"',N'"+series[i]+"',N'"+category[j]+"', N'"+value[i][j]+"')"; // 执行SQL语句 stmt = conn.createStatement(); stmt.executeUpdate(sql); System.out.println("插入数据成功"); } } } } catch (Exception e) { e.printStackTrace(); stmt.close(); conn.close(); } } }
在字段值前加个N就能够解决乱码了,就这么简单 java
sql server有两个转义符:
' 默认状况下, '是字符串的边界符, 若是在字符串中包含', 则必须使用两个', 第1个'就是转义符
另外一个转义符是"
当SET QUOTED_IDENTIFIER OFF时, "是字符串边界符, 字符串中的"必须用两个"表示 sql