Serialiseer en Werk met'n Dokument In'n Databasis
Een van die take wat jy dalk moet doen wanneer jy met dokumente werk, is om Document voorwerpe na en van’n databasis te stoor en te haal. Dit sou byvoorbeeld nodig wees as u enige tipe inhoudbestuurstelsel implementeer. Alle vorige weergawes van dokumente moet in die databasisstelsel gestoor word. Die vermoë om dokumente in die databasis te stoor is ook uiters nuttig wanneer u aansoek’n webgebaseerde diens lewer.
Aspose.Words bied’n vermoë om’n dokument te omskep in’n byte skikking vir latere werk met hierdie dokument in’n databasis.
Skakel’n Dokument Na Byte Array
Om’n dokument in’n databasis te stoor of om’n dokument voor te berei vir oordrag oor die web, is dit dikwels nodig om die dokument te serialiseer om’n byte-array te verkry.
Om’n Document voorwerp in Aspose.Wordste serialiseer:
- Stoor dit na’n MemoryStream met behulp van die Save metode oorlading van die Document klas.
- Bel die ToArray metode, wat’n skikking van grepe wat die dokument in greep vorm.
Die stappe hierbo kan dan omgekeer word om die grepe terug te laai in’n Document voorwerp.
Die onderstaande voorbeeld toon hoe om’n Document voorwerp te serialiseer om’n byte skikking te kry, en dan hoe om die byte skikking te unserialiseer om’n Document voorwerp weer te kry:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// Load the document. | |
Document doc = new Document(dataDir + "Test File (doc).doc"); | |
// Create a new memory stream. | |
ByteArrayOutputStream outStream = new ByteArrayOutputStream(); | |
// Save the document to stream. | |
doc.save(outStream, SaveFormat.DOCX); | |
// Convert the document to byte form. | |
byte[] docBytes = outStream.toByteArray(); | |
// The bytes are now ready to be stored/transmitted. | |
// Now reverse the steps to load the bytes back into a document object. | |
ByteArrayInputStream inStream = new ByteArrayInputStream(docBytes); | |
// Load the stream into a new document object. | |
Document loadDoc = new Document(inStream); |
Stoor, Lees En Verwyder’n Dokument in’n Databasis
Hierdie afdeling wys hoe om’n dokument in’n databasis te stoor en dan laai dit terug in’n Document
voorwerp vir die werk met dit. Vir eenvoud is die lêernaam die sleutel wat gebruik word om dokumente uit die databasis te stoor en te haal. Die databasis bevat twee kolomme. Die eerste kolom “FileName” word as’n String gestoor en word gebruik om dokumente te identifiseer. Die tweede kolom “FileContent” is gestoor as’n BLOB
voorwerp wat die dokument voorwerp in die byte vorm stoor.
Die volgende kode voorbeeld toon hoe om’n verbinding met’n databasis op te stel en opdragte uit te voer:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
String url1 = "jdbc:mysql://localhost:3306/test"; | |
String user = "root"; | |
String password = "123"; | |
// Open a database connection. | |
Connection mConnection = DriverManager.getConnection(url1, user, password); |
Die volgende kode voorbeeld toon hoe om’n dokument te red om die databasis, dan lees dieselfde dokument weer, en uiteindelik verwyder die rekord met die dokument uit die databasis:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// Store the document to the database. | |
StoreToDatabase(doc, mConnection); | |
// Read the document from the database and store the file to disk. | |
Document dbDoc = ReadFromDatabase(dataDir + fileName, mConnection); | |
// Save the retrieved document to disk. | |
dbDoc.save(dataDir + fileName); | |
// Delete the document from the database. | |
DeleteFromDatabase(dataDir + fileName, mConnection); | |
// Close the connection to the database. | |
mConnection.close(); |
Stoor’n Dokument In’n Databasis
Om’n dokument in’n databasis te stoor, omskep hierdie dokument in’n verskeidenheid grepe, soos beskryf aan die begin van hierdie artikel. Dan, stoor hierdie byte skikking in’n databasis veld.
Die volgende kode voorbeeld toon hoe om’n dokument te red om die gespesifiseerde databasis:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
public static void StoreToDatabase(Document doc, Connection mConnection) throws Exception { | |
// Create an output stream which uses byte array to save data | |
ByteArrayOutputStream aout = new ByteArrayOutputStream(); | |
// Save the document to byte array | |
doc.save(aout, SaveFormat.DOCX); | |
// Get the byte array from output steam | |
// the byte array now contains the document | |
byte[] buffer = aout.toByteArray(); | |
// Get the filename from the document. | |
String fileName = doc.getOriginalFileName(); | |
String filePath = fileName.replace("\\", "\\\\"); | |
// Create the SQL command. | |
String commandString = "INSERT INTO Documents (FileName, FileContent) VALUES('" + filePath + "', '" + buffer | |
+ "')"; | |
Statement statement = mConnection.createStatement(); | |
statement.executeUpdate(commandString); | |
} |
Spesifiseer commandString, wat is’n SQL uitdrukking wat al die werk doen:
- Om’n dokument in die databasis te stoor, word die “INSERT INTO” opdrag gebruik en’n tabel gespesifiseer saam met die waardes van twee rekordvelde FileName en FileContent. Om bykomende parameters te vermy, word die lêernaam geneem uit die Document voorwerp self. Die
FileContent
veld waarde is toegeken grepe van die geheue stroom, wat’n binêre voorstelling van die gestoor dokument bevat. - Die oorblywende reël kode voer die opdrag uit wat die Aspose.Words dokument in die databasis stoor.
Haal’n Dokument uit’n Databasis
Om’n dokument uit die databasis te haal, kies die rekord wat die dokumentdata bevat as’n skikking van grepe. Laai dan die byte skikking van die rekord in MemoryStream en skep’n Document voorwerp wat die dokument van die MemoryStream sal laai.
Die volgende kode voorbeeld toon hoe om te haal en terug te keer’n dokument van die gespesifiseerde databasis met behulp van die lêernaam as’n sleutel om hierdie dokument te haal:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
private static Document ReadFromDatabase(String fileName, Connection mConnection) throws Exception { | |
// Create the SQL command. | |
String commandString = "SELECT * FROM Documents WHERE FileName=?"; | |
PreparedStatement statement = mConnection.prepareStatement(commandString); | |
statement.setString(1, fileName); | |
Document doc = null; | |
ResultSet result = statement.executeQuery(); | |
if (result.next()) { | |
Blob blob = result.getBlob("FileContent"); | |
InputStream inputStream = blob.getBinaryStream(); | |
doc = new Document(inputStream); | |
inputStream.close(); | |
System.out.println("File saved"); | |
} | |
result.close(); | |
return doc; | |
} |
Skrap’n Dokument Uit’n Databasis
Om’n dokument uit die databasis te verwyder, gebruik die toepaslike SQL opdrag sonder enige manipulasies op die Document voorwerp.
Die volgende kode voorbeeld toon hoe om’n dokument uit die databasis te verwyder, met behulp van die lêernaam om die rekord te haal:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
private static void DeleteFromDatabase(String fileName, Connection mConnection) throws Exception { | |
// Create the SQL command. | |
String commandString = "DELETE FROM Documents WHERE FileName='" + fileName + "'"; | |
Statement statement = mConnection.createStatement(); | |
// Delete the record. | |
statement.execute(commandString); | |
} |