Veritabanında Belgeyi Seri Hale Getir ve Çalıştır

Bir belge üzerinde çalışırken yapmanız gereken görevlerden biri, bir veritabanına ve geri alma işlemine Document nesneyi kaydetmek ve almak olabilir. Örneğin, bu, herhangi bir tür içerik yönetim sistemi uyguladığınızda gerekli olacaktır. Önceki tüm belge sürümleri veritabanı sisteminde depolanmalıdır. Uygulamanın web tabanlı bir hizmet sunduğu durumlarda belgeleri veritabanında depolama yeteneği de son derece kullanışlıdır.

Aspose.Words bir belgeyi sonraki işlem için veritabanında kullanılmak üzere bir bayt dizisi dönüştürme yeteneği sağlar.

Bir Belgeyi Bayt Dizisine Dönüştürün

Bir belgeyi bir veritabanında depolamak veya bir belgeyi internette iletmek için bunu yapmak genellikle bir bayt dizisi elde etmek için belgenin seri hale getirilmesini gerektirir.

Bir Document nesnesini Aspose.Words içinde seri hale getirmek için:

  1. Bunu bir MemoryStream kullanarak kaydetmek için Save yöntem aşırı yüklemesi Document sınıfını kullanın.
  2. ToArray yöntemini çağırın, bu belgeyi bayt cinsinden temsil eden bir dizi bayt döndürür.

Yukarıdaki adımlar daha sonra bir Document nesne içine baytları geri yüklemek için tersine çevrilebilir.

Aşağıdaki örnek, bir Document nesnesini bayt dizisi elde etmek için nasıl seri hale getirileceğini ve ardından bayt dizisini seri durumdan çıkarmak için tekrar nasıl bir Document nesnesi elde edileceğini göstermektedir:

// 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);

Bir Veritabanı’nda Bir Belgeyi Sakla, Oku ve Sil

Bu bölüm bir belgeyi veritabanına kaydetmek ve ardından çalışmak için bunu bir Document nesnesine yüklemek için nasıl yapılacağını gösterir. Basitlik açısından, dosya adı veritabanından belgeleri depolamak ve almak için kullanılan anahtardır. Veritabanında iki sütun vardır. İlk sütun “FileName” bir dize olarak saklanır ve belgelerin tanımlanmasına kullanılır. İkinci sütun “FileContent” bir BLOB nesnesi olarak saklanır ve belge nesnesini bayt formunda depolar.

Aşağıdaki kod örneği bir veritabanına nasıl bağlanılacağını ve komutların nasıl çalıştırılacağını gösterir:

// 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);

Aşağıdaki kod örneğinde bir belgeyi veritabanına kaydetmek, aynı belgeyi tekrar okumak ve son olarak belge içeren kaydı veritabanından silmek gösterilmiştir:

// 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();

Bir Belgeyi Bir Veritabanına Kaydet

Bir belgeyi bir veritabanında kaydetmek için bu belgeyi, bu makalenin başında açıklandığı gibi bir bayt dizisi haline dönüştürün. Sonra, bu bayt dizisini bir veritabanı alanına kaydedin.

Aşağıdaki kod örneği, belirtilen veritabanına bir belgenin nasıl kaydedileceğini göstermektedir:

// 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);
}

Tüm işi yapan bir SQL ifadesi olan commandString belirtin:

  • Bir belgeyi veritabanına kaydetmek için, “INSERT INTO” komutu kullanılır ve iki kayıt alanı değerleri - FileName ve FileContent ile birlikte bir tablo belirtilir. Ek parametreleri önlemek için dosya adı Document nesnesinden alınır. FileContent alan değeri bellek akışından baytlara atanır, bu da depolanan belgeyi içeren ikili gösterimdir.
  • Kalan kod satırı, Aspose.Words belgesi veritabanında depolanmak üzere komutu yürütür.

Bir Veritabanından Bir Belgeyi Geri Alın

Veritabanından bir belge almak için, belge verilerini bir bayt dizisi olarak içeren kayıt seçin. Sonra bayt dizisini kayıttan MemoryStream ‘a yükleyin ve bir Document nesnesi oluşturun ki bu nesne MemoryStream‘dan belgeyi yükleyecektir.

Aşağıdaki kod örneği, belirtilen veritabanından bir belgeyi almak ve döndürmek için dosya adının anahtar olarak kullanıldığı gösterilmektedir:

// 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;
}

Bir Veritabanından Bir Dokümanı Sil

Veritabanından bir belgeyi silmek için Document nesnesi üzerinde herhangi bir manipülasyona gerek kalmadan uygun SQL komutunu kullanın.

Aşağıdaki kod örneği veritabanından bir belgenin nasıl silineceğini göstermektedir, dosya adı kullanarak kayıtları alır:

// 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);
}