LibreOffice 25.2 Βοήθεια
Η υπηρεσία Database (Βάση δεδομένων) παρέχει πρόσβαση σε βάσεις δεδομένων είτε ενσωματωμένες, είτε περιγράφονται στα έγγραφα Base. Αυτή η υπηρεσία παρέχει μεθόδους για:
Λήψη πρόσβασης σε δεδομένα σε πίνακες βάσης δεδομένων.
Εκτέλεση ερωτημάτων SELECT και εκτέλεση συγκεντρωτικών συναρτήσεων.
Εκτέλεση δηλώσεων ενεργειών SQL όπως INSERT, UPDATE, DELETE κ.λπ.
Κάθε παρουσία της υπηρεσίας Database (Βάση δεδομένων) αντιπροσωπεύει μια ενιαία βάση δεδομένων και παρέχει πρόσβαση στους πίνακες, στα ερωτήματα και στα δεδομένα της.
Αυτή η υπηρεσία δεν παρέχει πρόσβαση σε φόρμες ή αναφορές στο έγγραφο Base που περιέχει τη βάση δεδομένων. Για πρόσβαση σε φόρμες σε ένα έγγραφο Base, ανατρέξτε στη μέθοδο FormDocuments της υπηρεσίας Base.
Όλες οι ανταλλαγές μεταξύ αυτής της υπηρεσίας και της βάσης δεδομένων γίνονται μόνο με χρήση SQL.
Οι δηλώσεις SQL μπορούν να εκτελούνται σε άμεση ή έμμεση κατάσταση. Σε άμεση κατάσταση η δήλωση μεταφέρεται στη μηχανή βάσης δεδομένων χωρίς κανένα έλεγχο σύνταξης ή επιθεώρησης.
Οι παρεχόμενες διεπαφές περιλαμβάνουν απλούς πίνακες και καταλόγους ερωτημάτων, καθώς και πρόσβαση σε δεδομένα βάσης δεδομένων.
Για να κάνετε τις προτάσεις SQL πιο ευανάγνωστες, μπορείτε να χρησιμοποιήσετε αγκύλες "[ ]" για να περικλείσετε ονόματα πινάκων, ερωτημάτων και πεδίων αντί να χρησιμοποιήσετε άλλους χαρακτήρες περίκλεισης που μπορεί να είναι αποκλειστικοί σε ορισμένα Συστήματα Διαχείρισης Σχεσιακών Βάσεων Δεδομένων (RDBMS). Αλλά προσέξτε ότι οι χαρακτήρες που εσωκλείονται είναι υποχρεωτικοί σε αυτό το περιβάλλον.
Από προεπιλογή, η βάση δεδομένων χειρίζεται τις συναλλαγές σε λειτουργία αυτόματης δέσμευσης, που σημαίνει ότι μια δέσμευση πραγματοποιείται μετά από κάθε πρόταση SQL.
Χρησιμοποιήστε τη μέθοδο SetTransactionMode για να αλλάξετε την προεπιλεγμένη συμπεριφορά, η οποία επιτρέπει μη αυτόματες δεσμεύσεις και επαναφορές.
Οι μέθοδοι Commit και Rollback χρησιμοποιούνται για την οριοθέτηση συναλλαγών.
Στο LibreOffice, υπάρχουν πέντε τύποι τρόπων απομόνωσης συναλλαγών, όπως ορίζονται στη ομάδα των σταθερών com.sun.star.sdbc.TransactionIsolation:
| Σταθερά | Τιμή | Ερμηνεία | 
|---|---|---|
| NONE | 0 | Ο χειρισμός συναλλαγών είναι απενεργοποιημένος και η βάση δεδομένων έχει οριστεί στην προεπιλεγμένη λειτουργία αυτόματης υποβολής. | 
| READ_UNCOMMITTED | 1 | Ενδέχεται να προκύψουν βρώμικες, μη επαναλαμβανόμενες και φανταστικές αναγνώσεις. Εάν μια σειρά αλλάξει από μια συναλλαγή, μια άλλη συναλλαγή θα μπορεί να διαβάσει αυτές τις αλλαγές ακόμα κι αν δεν έχουν πραγματοποιηθεί. | 
| READ_COMMITTED | 2 | Οι βρώμικες αναγνώσεις αποτρέπονται, ωστόσο μπορεί να προκύψουν μη επαναλαμβανόμενες και φανταστικές αναγνώσεις. Αυτό το επίπεδο αποτρέπει την ανάγνωση σειρών με μη δεσμευμένες αλλαγές. | 
| REPEATABLE_READ | 4 | Οι βρώμικες και οι μη επαναλαμβανόμενες αναγνώσεις αποτρέπονται. Ωστόσο, μπορεί να προκύψουν αναγνώσεις φαντασίας. Εκτός από την αποτροπή της ανάγνωσης μη δεσμευμένων δεδομένων, αποτρέπει επίσης ότι δύο λειτουργίες ανάγνωσης στην ίδια συναλλαγή επιστρέφουν διαφορετικά αποτελέσματα. | 
| SERIALIZABLE | 8 | Αποτρέπονται οι βρώμικες, οι μη επαναλαμβανόμενες και οι φανταστικές αναγνώσεις. Εκτός από τους περιορισμούς του προηγούμενου επιπέδου, διασφαλίζει επίσης ότι το σύνολο των εγγραφών που αντιστοιχούν σε μια πρόταση WHERE παραμένει αμετάβλητο στην ίδια συναλλαγή. | 
Διαβάστε τη σελίδα της Wikipedia στο Isolation in Database Systems για να μάθετε περισσότερα σχετικά με την ακεραιότητα των συναλλαγών.
Πριν τη χρήση της υπηρεσίας Database (Βάση δεδομένων) πρέπει να φορτωθεί ή να εισαχθεί η βιβλιοθήκη ScriptForge:
Για να δημιουργήσετε μια παρουσία της υπηρεσίας Database (Βάση δεδομένων), μπορείτε να χρησιμοποιήσετε τη μέθοδο CreateScriptService:
CreateScriptService("SFDatabases.Database", [filename: str], [registrationname], [readonly], [user, [password]]): svc
Στη σύνταξη που περιγράφεται παραπάνω, μπορείτε να χρησιμοποιήσετε είτε το "SFDatabases.Database", είτε απλά το "Database" ως το πρώτο όρισμα της μεθόδου CreateScriptService.
filename: (όνομα αρχείου) Το όνομα του αρχείου Base. Πρέπει να εκφράζεται με τη σημειογραφία SF_FileSystem.FileNaming.
registrationname: (όνομα καταχώρησης) Το όνομα μιας καταχωρημένης βάσης δεδομένων. Εάν παρέχεται το filename, αυτό το όρισμα δεν θα πρέπει να χρησιμοποιηθεί.
Αντίθετα, εάν έχει καθοριστεί ένα registrationname (όνομα εγγραφής), η παράμετρος filename δεν θα πρέπει να οριστεί.
readonly (μόνο για ανάγνωση): Καθορίζει εάν η βάση δεδομένων θα ανοίξει ως μόνο για ανάγνωση (Προεπιλογή = True).
user, password (χρήστης, κωδικός πρόσβασης): Πρόσθετες παράμετροι σύνδεσης στον διακομιστή της βάσης δεδομένων.
      GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
      Dim myDatabase as Object
      Set myDatabase = CreateScriptService("Database", "/home/user/Documents/myDB.odb")
      ' Εκτέλεση ερωτημάτων, δηλώσεων SQL, ...
      myDatabase.CloseDatabase()
    
      from scriptforge import CreateScriptService
      myDatabase = CreateScriptService("Database", "/home/user/Documents/myDB.odb")
      # Εκτέλεση ερωτημάτων, δηλώσεων SQL, ...
      myDatabase.CloseDatabase()
    Είναι επίσης δυνατή η πρόσβαση στη βάση δεδομένων που σχετίζεται με ένα έγγραφο Base χρησιμοποιώντας την υπηρεσία ScriptForge.UI, όπως φαίνεται στα παρακάτω παραδείγματα:
      Dim myDoc As Object, myDatabase As Object, ui As Object
      Set ui = CreateScriptService("UI")
      Set myDoc = ui.OpenBaseDocument("/home/user/Documents/myDB.odb")
      ' Ο χρήστης και ο κωδικός πρόσβασης παρέχονται παρακάτω, εάν χρειάζεται
      Set myDatabase = myDoc.GetDatabase()
      ' Εκτέλεση ερωτημάτων, δηλώσεων SQL, ...
      myDatabase.CloseDatabase()
      myDoc.CloseDocument()
    
      ui = CreateScriptService("UI")
      doc = ui.OpenBaseDocument("/home/user/Documents/myDB.odb")
      # Ο χρήστης και ο κωδικός πρόσβασης παρέχονται παρακάτω, εάν χρειάζεται
      myDatabase = doc.GetDatabase()
      # Εκτέλεση ερωτημάτων, δηλώσεων SQL, ...
      myDatabase.CloseDatabase()
      doc.CloseDocument()
    Η μέθοδος GetDatabase που χρησιμοποιείται στο παραπάνω παράδειγμα αποτελεί μέρος της υπηρεσίας ScriptForge της Base .
| Όνομα | Μόνο για ανάγνωση | Τύπος | Περιγραφή | 
|---|---|---|---|
| Queries | Ναι | Πίνακας συμβολοσειρών | Ο κατάλογος των αποθηκευμένων ερωτημάτων. | 
| Tables | Ναι | Πίνακας συμβολοσειρών | Ο κατάλογος των αποθηκευμένων πινάκων. | 
| XConnection | Ναι | Το αντικείμενο UNO που αντιπροσωπεύει την τρέχουσα σύνδεση της βάσης δεδομένων. | |
| XMetaData | Ναι | Το αντικείμενο UNO που αντιπροσωπεύει τα μεταδεδομένα που περιγράφουν τα χαρακτηριστικά του συστήματος της βάσης δεδομένων. | 
| Κατάλογος μεθόδων στην υπηρεσία βάσης δεδομένων | ||
|---|---|---|
Κλείνει την τρέχουσα σύνδεση της βάσης δεδομένων.
db.CloseDatabase()
    myDatabase.CloseDatabase() ' Basic
  
    myDatabase.CloseDatabase() # Python
  Δεσμεύει όλες τις ενημερώσεις που έχουν γίνει από την προηγούμενη κλήση Commit ή Rollback.
Αυτή η μέθοδος αγνοείται εάν οι δεσμεύσεις γίνονται αυτόματα μετά από κάθε δήλωση SQL, δηλαδή η βάση δεδομένων έχει οριστεί στην προεπιλεγμένη λειτουργία αυτόματης δέσμευσης.
db.Commit()
      ' Ορίστε το επίπεδο συναλλαγής REPEATABLE_READ
      myDB.SetTransactionMode(4)
      myDB.RunSql("UPDATE ...")
      myDB.Commit()
      myDB.RunSql("DELETE ...")
      ' Δοκιμάστε κάποια κατάσταση πριν δεσμευτεί
      If bSomeCondition Then
          myDB.Commit()
      Else
          myDB.Rollback()
      End If
      ' Επαναφορά της λειτουργίας αυτόματης δέσμευσης
      myDB.SetTransactionMode()
    
      myDB.SetTransactionMode(4)
      myDB.RunSql("UPDATE ...")
      myDB.Commit()
      myDB.RunSql("DELETE ...")
      if some_condition:
          myDB.Commit()
      else:
          myDB.Rollback()
      myDB.SetTransactionMode()
    Δημιουργεί μια παρουσία υπηρεσίας Dataset με βάση έναν πίνακα, ένα ερώτημα ή μια πρόταση SQL SELECT.
db.CreateDataset(sqlcommand: str, opt directsql: bool, opt filter: str, opt orderby: str): svc
sqlcommand: Ένα όνομα πίνακα, ένα όνομα ερωτήματος ή μια έγκυρη πρόταση SQL SELECT. Τα αναγνωριστικά μπορούν να εσωκλείονται με αγκύλες. Αυτό το όρισμα κάνει διάκριση πεζών-κεφαλαίων.
directsql: Ορίστε αυτό το όρισμα σε True για να στείλετε τη δήλωση απευθείας στη μηχανή βάσης δεδομένων χωρίς προεπεξεργασία από το LibreOffice (Προεπιλογή = False).
filter: Καθορίζει την συνθήκη που πρέπει να ταιριάζουν οι εγγραφές για να συμπεριληφθούν στο επιστρεφόμενο σύνολο δεδομένων. Αυτό το όρισμα εκφράζεται ως πρόταση SQL WHERE χωρίς τη λέξη-κλειδί "WHERE".
orderby: Καθορίζει τη σειρά του συνόλου δεδομένων ως πρόταση SQL ORDER BY χωρίς τη λέξη-κλειδί "ORDER BY".
Τα ακόλουθα παραδείγματα σε Basic και Python επιστρέφουν ένα σύνολο δεδομένων με τις εγγραφές ενός πίνακα με το όνομα "Customers".
      oDataset = myDatabase.CreateDataset("Customers", Filter := "[Name] LIKE 'A'")
    
      dataset = myDatabase.CreateDataset("Customers", Filter = "[Name] LIKE 'A'")
    Υπολογίζει τη δεδομένη αθροιστική συνάρτηση σε ένα πεδίο ή παράσταση που ανήκει σε έναν πίνακα.
Προαιρετικά, μια πρόταση SQL WHERE μπορεί να καθοριστεί ως φίλτρο που θα εφαρμοστεί πριν από τη συγκεντρωτική συνάρτηση.
db.DAvg(expression: str, tablename: str, [criteria: str]): any
db.DCount(expression: str, tablename: str, [criteria: str]): any
db.DMin(expression: str, tablename: str, [criteria: str]): any
db.DMax(expression: str, tablename: str, [criteria: str]): any
db.DSum(expression: str, tablename: str, [criteria: str]): any
expression (έκφραση): Μια έκφραση SQL στην οποία τα ονόματα των πεδίων περιβάλλονται με αγκύλες.
tablename : Όνομα πίνακα (χωρίς αγκύλες).
criteria (κριτήρια): Μια πρόταση WHERE χωρίς τη λέξη-κλειδί "WHERE", στην οποία τα ονόματα πεδίων περιβάλλονται με αγκύλες.
Το παρακάτω παράδειγμα υποθέτει ότι το αρχείο Employees.odb έχει έναν πίνακα με το όνομα EmployeeData.
      GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
      Dim myDB as Variant
      Set myDB = CreateScriptService("Database", "/home/user/Databases/Employees.odb")
      ' Μετρά τον αριθμό των εργαζομένων στον πίνακα
      MsgBox myDB.DCount("[ID]", "EmployeeData")
      ' Επιστρέφει το άθροισμα όλων των μισθών του πίνακα
      MsgBox myDB.DSum("[Salary]", "EmployeeData")
      ' Παρακάτω είναι μερικά παραδείγματα του τρόπου φιλτραρίσματος των πινάκων
      MsgBox myDB.DCount("[ID]", "EmployeeData", "[Position] = 'Manager'")
      MsgBox myDB.DCount("[ID]", "EmployeeData", "[Position] = 'Sales' AND [City] = 'Chicago'")
      MsgBox myDB.DCount("[ID]", "EmployeeData", "[FirstName] LIKE 'Paul%'")
    
      myDB = CreateScriptService("Database", "/home/user/Databases/Employees.odb")
      bas = CreateScriptService("Basic")
      bas.MsgBox(myDB.DCount("[ID]", "EmployeeData"))
      bas.MsgBox(myDB.DSum("[Salary]", "EmployeeData"))
      bas.MsgBox(myDB.DCount("[ID]", "EmployeeData", "[Position] = 'Manager'"))
      bas.MsgBox(myDB.DCount("[ID]", "EmployeeData", "[Position] = 'Sales' AND [City] = 'Chicago'"))
      bas.MsgBox(myDB.DCount("[ID]", "EmployeeData", "[FirstName] LIKE 'Paul%'"))
    Υπολογίζει μια έκφραση SQL σε μια μεμονωμένη εγγραφή που επιστρέφεται από μια πρόταση WHERE που ορίζεται από την παράμετρο Criteria.
Εάν το ερώτημα επιστρέφει πολλές εγγραφές, λαμβάνεται υπόψη μόνο η πρώτη. Χρησιμοποιήστε την παράμετρο OrderClause για να προσδιορίσετε πώς ταξινομούνται τα αποτελέσματα των ερωτημάτων.
db.DLookup(expression: str, tablename: str, [criteria:str], [orderclause: str]): any
expression (έκφραση): Μια έκφραση SQL στην οποία τα ονόματα των πεδίων περιβάλλονται με αγκύλες.
tablename : Όνομα πίνακα (χωρίς αγκύλες).
criteria (κριτήρια): Μια πρόταση WHERE χωρίς τη λέξη-κλειδί "WHERE", στην οποία τα ονόματα πεδίων περιβάλλονται με αγκύλες.
orderclause : Μια πρόταση ORDER BY χωρίς τις λέξεις-κλειδιά "ORDER BY". Τα ονόματα των πεδίων πρέπει να περιβάλλονται με αγκύλες.
      MsgBox myDB.DLookup("[FirstName]", "EmployeeData", Criteria := "[LastName] LIKE 'Smith'", OrderClause := "[FirstName] DESC")
      MsgBox myDB.DLookup("[Salary]", "EmployeeData", Criteria := "[ID] = '3'")
      MsgBox myDB.DLookup("[Quantity] * [Value]", "Sales", Criteria := "[SaleID] = '5014'")
    
      bas = CreateScriptService("Basic")
      bas.MsgBox(myDB.DLookup("[FirstName]", "EmployeeData", criteria = "[LastName] LIKE 'Smith'", orderclause = "[FirstName] DESC"))
      bas.MsgBox(myDB.DLookup("[Salary]", "EmployeeData", criteria = "[ID] = '3'"))
      bas.MsgBox(myDB.DLookup("[Quantity] * [Value]", "Sales", criteria = "[SaleID] = '5014'"))
    Αποθηκεύει τα περιεχόμενα ενός πίνακα ή τα αποτελέσματα ενός ερωτήματος SELECT, ή μιας πρότασης SQL σε έναν δισδιάστατο πίνακα. Το πρώτο ευρετήριο στον πίνακα αντιστοιχεί στις σειρές και το δεύτερο ευρετήριο αναφέρεται στις στήλες.
Μπορεί να καθοριστεί ένα ανώτερο όριο για τον αριθμό των σειρών που επιστρέφονται. Προαιρετικά, τα ονόματα στηλών μπορούν να εισαχθούν στην πρώτη σειρά του πίνακα.
Ο πίνακας που επιστρέφεται θα είναι κενός, εάν δεν επιστραφούν σειρές και δεν απαιτούνται οι κεφαλίδες στηλών.
db.GetRows(sqlcommand: str, directsql: bool = False, header: bool = False, maxrows: int = 0): any
sqlcommand: Ένα όνομα πίνακα ή ερωτήματος (χωρίς αγκύλες), ή μια πρόταση SQL SELECT.
directsql: Όταν είναι True, η εντολή SQL αποστέλλεται στη μηχανή βάσης δεδομένων χωρίς προανάλυση. Η προεπιλογή είναι False. Αυτό το όρισμα αγνοείται για πίνακες. Για τα ερωτήματα, η επιλογή που εφαρμόστηκε είναι αυτή που ορίστηκε όταν ορίστηκε το ερώτημα.
header (κεφαλίδα): Όταν είναι True, η πρώτη σειρά του πίνακα που επιστρέφεται περιέχει τις κεφαλίδες των στηλών.
maxrows: Ο μέγιστος αριθμός σειρών προς επιστροφή. Η προεπιλογή είναι μηδέν, που σημαίνει ότι δεν υπάρχει όριο στον αριθμό των σειρών που επιστρέφονται.
Ακολουθούν μερικά παραδείγματα για το πώς μπορεί να χρησιμοποιηθεί η μέθοδος GetRows:
      Dim queryResults as Variant
      ' Επιστρέφει όλες τις σειρές στον πίνακα με κεφαλίδες στηλών
      queryResults = myDB.GetRows("EmployeeData", Header := True)
      ' Επιστρέφει τις πρώτες 50 εγγραφές εργαζομένων που ταξινομήθηκαν από το πεδίο 'FirstName' (Όνομα)
      queryResults = myDB.GetRows("SELECT * FROM EmployeeData ORDER BY [FirstName]", MaxRows := 50)
    
      queryResults = myDB.GetRows("EmployeeData", header = True)
      queryResults = myDB.GetRows("SELECT * FROM EmployeeData ORDER BY [FirstName]", maxrows = 50)
    Ανοίγει το καθορισμένο έγγραφο φόρμας σε κανονική λειτουργία. Αυτή η μέθοδος επιστρέφει μια παρουσία υπηρεσίας FormDocument που αντιστοιχεί στο καθορισμένο έγγραφο φόρμας.
Εάν το έγγραφο φόρμας είναι ήδη ανοιχτό, ενεργοποιείται το παράθυρο του εγγράφου φόρμας.
Εάν το καθορισμένο έγγραφο φόρμας δεν υπάρχει, τότε επιστρέφεται Nothing.
svc.OpenFormDocument(formdocument: str): svc
formdocument: Το όνομα του FormDocument που θα ανοίξει, ως συμβολοσειρά με διάκριση πεζών-κεφαλαίων.
Τα περισσότερα έγγραφα φόρμας αποθηκεύονται στη ρίζα του εγγράφου της Base και μπορούν να ανοίξουν απλά χρησιμοποιώντας τα ονόματά τους, όπως στο παρακάτω παράδειγμα:
    Dim oFormDoc As Object
    oFormDoc = myDB.OpenFormDocument("myFormDocument")
  Εάν τα έγγραφα φόρμας είναι οργανωμένα σε φακέλους, είναι απαραίτητο να συμπεριλάβετε το όνομα του φακέλου για να καθορίσετε το έγγραφο φόρμας που θα ανοίξει, όπως φαίνεται στο ακόλουθο παράδειγμα:
    oFormDoc = myDB.OpenFormDocument("myFolder/myFormDocument")
  
    formDoc = myDB.OpenFormDocument("myFormDocument")
  
    formDoc = myDB.OpenFormDocument("myFolder/myFormDocument")
  Ανοίγει το παράθυρο Προβολή δεδομένων του καθορισμένου ερωτήματος και επιστρέφει μια παρουσία της υπηρεσίας Datasheet.
Εάν δεν ήταν δυνατό να ανοίξει το ερώτημα, τότε επιστρέφεται Nothing.
db.OpenQuery(queryname: str): obj
queryname: Το όνομα ενός υπάρχοντος ερωτήματος ως συμβολοσειρά με διάκριση πεζών-κεφαλαίων.
      myDatabase.OpenQuery("MyQuery")
    
      myDatabase.OpenQuery("MyQuery")
    Εκτελεί μια εντολή SQL SELECT, ανοίγει ένα παράθυρο Προβολής δεδομένων με τα αποτελέσματα και επιστρέφει μια παρουσία της υπηρεσίας Datasheet.
db.OpenSql(sql: str, directsql: bool): obj
sql: Μια συμβολοσειρά που περιέχει μια έγκυρη πρόταση SQL SELECT. Τα αναγνωριστικά μπορούν να περικλείονται σε αγκύλες.
directsql: Όταν True, η εντολή SQL αποστέλλεται στη μηχανή βάσης δεδομένων χωρίς προανάλυση (Προεπιλογή = False).
      myDatabase.OpenSql("SELECT * FROM [Customers] ORDER BY [CITY]")
    
      myDatabase.OpenSql("SELECT * FROM [Customers] ORDER BY [CITY]")
    Ανοίγει το παράθυρο Προβολή δεδομένων του καθορισμένου πίνακα και επιστρέφει μια παρουσία της υπηρεσίας Datasheet.
db.OpenTable(tablename: str): obj
tablename: Το όνομα ενός υπάρχοντος πίνακα ως συμβολοσειρά με διάκριση πεζών-κεφαλαίων.
      myDatabase.OpenTable("MyTable")
    
      myDatabase.OpenTable("MyTable")
    Ακυρώνει όλες τις αλλαγές που έγιναν στη βάση δεδομένων από την τελευταία κλήση Commit, ή Rollback.
db.Rollback()
      myDB.SetTransactionMode(1)
      myDB.RunSql("UPDATE ...")
      ' ...
      If bSomeCondition Then
          myDB.Rollback()
      End If
    
      myDB.SetTransactionMode(1)
      myDB.RunSql("UPDATE ...")
      # ...
      if bSomeCondition:
          myDB.Rollback()
    Εκτελεί ένα ερώτημα ενέργειας μιας πρότασης SQL, όπως δημιουργία πίνακα, καθώς και εισαγωγή, ενημέρωση και διαγραφή εγγραφών.
Η μέθοδος επιστρέφει True όταν είναι επιτυχής.
Η μέθοδος RunSql απορρίπτεται με μήνυμα σφάλματος σε περίπτωση που η βάση δεδομένων είχε ανοίξει προηγουμένως σε λειτουργία μόνο για ανάγνωση.
db.RunSql(sqlcommand: str, directsql: bool = False): bool
sqlcommand: Ένα όνομα ερωτήματος (χωρίς αγκύλες) ή μια πρόταση SQL.
directsql: Όταν είναι True, η εντολή SQL αποστέλλεται στη μηχανή βάσης δεδομένων χωρίς προανάλυση. (Προεπιλογή = False). Για τα ερωτήματα, η επιλογή που εφαρμόστηκε είναι αυτή που ορίστηκε όταν ορίστηκε το ερώτημα.
      myDatabase.RunSql("INSERT INTO [EmployeeData] VALUES(25, 'Smith', 'John')", DirectSQL := True)
    
      myDatabase.RunSql("INSERT INTO [EmployeeData] VALUES(25, 'Smith', 'John')", directsql = True)
    Καθορίζει το επίπεδο απομόνωσης στις συναλλαγές της βάσης δεδομένων.
Από προεπιλογή, οι βάσεις δεδομένων διαχειρίζονται τις συναλλαγές σε λειτουργία αυτόματης δέσμευσης, πράγμα που σημαίνει ότι μια Commit εκτελείται αυτόματα μετά από κάθε πρόταση SQL.
Χρησιμοποιήστε αυτήν τη μέθοδο για να προσδιορίσετε με χειροκίνητο τρόπο το επίπεδο απομόνωσης των συναλλαγών. Όταν έχει οριστεί μια λειτουργία συναλλαγής διαφορετική από το NONE, το σενάριο πρέπει να καλέσει ρητά τη μέθοδο Commit για να εφαρμόσει τις αλλαγές στη βάση δεδομένων.
Αυτή η μέθοδος επιστρέφει True όταν είναι επιτυχής.
Η αλλαγή της λειτουργίας συναλλαγής κλείνει όλες τις παρουσίες του Dataset που δημιουργούνται από την τρέχουσα βάση δεδομένων.
db.SetTransactionMode(transactionmode: int = 0): bool
transactionmode: Καθορίζει τη λειτουργία συναλλαγής. Αυτό το όρισμα πρέπει να είναι μία από τις σταθερές που ορίζονται στο com.sun.star.sdbc.TransactionIsolation (Προεπιλογή = NONE)
Διαβάστε την ενότητα Χειρισμός συναλλαγών παραπάνω για να μάθετε περισσότερα σχετικά με τα επίπεδα απομόνωσης συναλλαγών που χρησιμοποιούνται στο LibreOffice.
      myDB.SetTransactionMode(com.sun.star.sdbc.TransactionIsolation.REPEATABLE_READ)
      oDataset = myDB.CreateDataset("SELECT ...")
      ' ...
      ' Επαναφoρά της λειτουργίας συναλλαγής στην προεπιλογή
      myDB.SetTransactionMode()
    
      from com.sun.star.sdbc import TransactionIsolation
      myDB.SetTransactionMode(TransactionIsolation.REPEATABLE_READ)
      dataset = myDB.CreateDataset("SELECT ...")
      # ...
      myDB.SetTransactionMode()