' N'插入数据的前缀为sqlserver

时间:2017-04-18 07:32:49

标签: java sql-server sql-server-2014

我被困了几天,我搜索了所有可能的答案,但没有......

我正在尝试将java api中的希腊字符值存储到SQLServer 2014中 但是我得到了这个???????

我使用N前缀和NsetString方法,但我仍然得到这个????这里的任何想法都是我的代码。

我的应用程序使用按钮将数据从文本插入到sqlserver ...我的所有数据都存储在ecxept的5列Περιγραφη_Υλικου中,其中包含希腊字符

public void g(){

  Statement st;
      ResultSet rs;
      Connection con = getConnection();
    try {

            st = con.createStatement();
String query = "INSERT INTO ektupotiko(Αριθμος_ΔΔΥ,Ημερομηνια,Αριθμος_Ονομαστικου,Ποσοτητα,Περιγραφη_Υλικου,Μοναδα_παραλαβες,Τυλ,Δχση,Μοναδα_μετρησης) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";


//rs = st.executeQuery(query);
PreparedStatement preparedStatement = con.prepareStatement(query);
ArrayList<data> listdata = getListdataFromTextFile("C:\\textdata.txt");

for(int i = 0; i < listdata.size(); i ++) {
                preparedStatement.setString(1, listdata.get(i).getαριθμος_ΔΔΥ());
                                System.out.println("test");
                preparedStatement.setString(2, listdata.get(i).getημερομηνια());
                                System.out.println("test");
                preparedStatement.setString(3, listdata.get(i).getαριθμος_Ονομαστικου());
                                System.out.println("test");
                preparedStatement.setString(4, listdata.get(i).getποσοτητα());
                                System.out.println("test");
                preparedStatement.setNString(5, listdata.get(i).getπεριγραφη_Υλικου());
                                System.out.println("OK");
                preparedStatement.setString(6, listdata.get(i).getμοναδα_παραλαβες());
                                System.out.println("test");
                preparedStatement.setString(7, listdata.get(i).getτυλ());
                                System.out.println("test");
                preparedStatement.setString(8, listdata.get(i).getδχση());
                                System.out.println("test");
                preparedStatement.setString(9, listdata.get(i).getμοναδα_μετρησης());
                                System.out.println("test");
                preparedStatement.executeUpdate();
                System.out.println("Insert success record:" + (i + 1));
                                System.out.println(listdata.size());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

public static ArrayList<data> getListdataFromTextFile(String filePath) {
        FileInputStream fis = null;
        InputStreamReader isr = null;
        BufferedReader bReader = null;
        ArrayList<data> listResult = new ArrayList<data>();
        try {
            fis = new FileInputStream(filePath);
            isr = new InputStreamReader(fis);
            bReader = new BufferedReader(isr);
            //String save line get from text file
            String line = null;
            //Array save product
            String[]strdata = null;

            //Loop and get all data in text file
            while(true) {
                //Get 1 line
                line = bReader.readLine();
                //Check line get empty, exit loop 
                if(line == null) {
                    break;
                } else {
                    strdata = line.split(",");
                    listResult.add(new data((strdata[0]),(strdata[1]),(strdata[2]),(strdata[3]),(strdata[4]),(strdata[5]),(strdata[6]),(strdata[7]),strdata[8]));
                }
            }

        } catch (Exception e) {
            System.out.println("Read file error");
            e.printStackTrace();
        } finally {
            //close file
            try {
                bReader.close();
                isr.close();
                fis.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return listResult;
    }

1 个答案:

答案 0 :(得分:0)

如果您在txt文件中使用UTF-8编码,请替换代码行(使用getListdataFromTextFile(String filePath)方法):

isr = new InputStreamReader(fis);

isr = new InputStreamReader(fis, "UTF-8");

或(如果您使用的是1.7 JDK或更新版本):

isr = new InputStreamReader(fis, StandardCharsets.UTF_8);

还要确保表中的列设置为正确的数据类型,该数据类型支持UTF-8字符(NCHAR,NVARCHAR,NTEXT类型)。