2015-08-10 12 views
5

Genişletme XML ile kaydedilmiş bir çok Office Open XML (OOXML) dosyası var ve bu dosyaları bir MySQL veritabanına yerleştirmeye çalışıyorum. Tamam bağlayabilirim ve dizeleri aynı sözdizimiyle farklı veritabanlarına ekleyebildim. Ancak veritabanında bir blob alanına bir XML dosyası eklemeye çalıştığımda, sözdizimi ile ilgili bir sorunum olduğunu söylüyor. Dosyaların biçimi nedeniyle yapmam gereken özel bir şey var mı? Benim konsolundaBir Office Açık XML (OOXML) dosyasını bir blob olarak MySQL içine ekleme

"Exception in thread "main"
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(1,2,3) values(_binary'PK\0\0\0\0\0!\0?RH?\0\0?\0\0\0[Content_Types].' at line 1".

0 ların birkaç yerine bir kutu içinde bir soru işareti olarak çıkıp:

public Insertion(Connection conn) throws SQLException, FileNotFoundException{ 

    System.out.println("Trying to insert Data.."); 

    String filePath1 = "C:/Users/SAVAGD05/Documents/RMP/Section1.XML"; 
    InputStream inputStream1 = new FileInputStream(new File(filePath1)); 
    String filePath2 = "C:/Users/SAVAGD05/Documents/RMP/Section1.XML"; 
    InputStream inputStream2 = new FileInputStream(new File(filePath2)); 
    String filePath3 = "C:/Users/SAVAGD05/Documents/RMP/Section1.XML"; 
    InputStream inputStream3 = new FileInputStream(new File(filePath3)); 

    System.out.println("It did this part"); 

    String SQL = "INSERT INTO (1,2,3) values(?,?,?)"; 
    PreparedStatement statement = conn.prepareStatement(SQL); 


    statement.setBlob(1, inputStream1); 
    statement.setBlob(2, inputStream2); 
    statement.setBlob(3, inputStream3); 
    statement.executeUpdate(); 


    System.out.println("Data inserted."); 
    conn.close(); 
    System.out.println("Connection Closed"); 
    System.out.println("Have a Nice Day and Goodbye."); 
    } 


} 

Bu

hatadır.

+1

tablo görünüm ne yapar (ben amaçlayan budur/wanted) beğenirsiniz ve neyi hedefliyorsunuz? Gerçekten üç bloğu tek bir kayıtta kaydetmek mi yoksa her bloğu kendi kaydına kaydetmek mi istiyorsunuz? Her durumda sorgunuzda bir tablo adı eksik: 'INSERT INTO table_name (col_name1, col_name2) VALUES (...), (...);' – rostbot

+0

Tabloda "Section1", "Section2" ve "Section2" sütun adları var. section3" . Ben sadece sözdizimini güncelledim: String SQL = "INSERT INTO (Section1, Section2, Section3) değerleri (?,?,?)"; ama bu hala hata hakkında hiçbir şey değiştirmedi. –

+2

Hala bir tablo adı belirtmediniz: 'String SQL =" your_table_name_here (Bölüm1, Section2, Section3) değerlerini INSERT (?,?,?) ";' – rostbot

cevap

3

Tamam, vay Sadece küçük bir sözdizimi hatası olduğunu anladım. Bu:

String SQL = "INSERT INTO sections(idSections,Section1,Section2,Section3) values(?,?,?,?)"; 

Ben tablosu adını devlet yanı sıra id sahadan bir değer vermek için gerektiği gibi:

String SQL = "INSERT INTO (1,2,3) values(?,?,?)"; 

olması gerekiyordu. Ortaya çıkan sorgu MS Word açılabilir beri çıkıyor gibi bir xml uzantısında OOXML verilerle ilgili bir sorun yoktur

İlgili konular