打开或者创建数据库的操作应该放在哪里?
打开strictMode后, db = new AliUserDBHelper(context).getReadableDatabase(); 这一行报错,大概就说StrictModeReadViolation 然后看到网上有人说这个读写还可能出现死锁的问题,等。 在getReadableDatabase方法的注释中说道:该操作是耗时的,不要放在主
打开strictMode后,
db = new AliUserDBHelper(context).getReadableDatabase(); 这一行报错,大概就说StrictModeReadViolation
然后看到网上有人说这个读写还可能出现死锁的问题,等。
在getReadableDatabase方法的注释中说道:该操作是耗时的,不要放在主线程里,也不要在ContentProvider的onCreate方法中调用。
{@link #getWritableDatabase}, this method may
* take a long time to return, so you should not call it from the
* application main thread, including from
* {@link android.content.ContentProvider#onCreate ContentProvider.onCreate()}.
那创建数据库的操作应该放在哪里呢?难到真是要开个线程,再传个handler给main/ui thread?
安卓sdk的demo有一个NotePad,就是在ContentProvider的onCreate方法中开的数据库
这个demo肯定是不行的,正确的做法如下:
简单讲,就是DBHelper的构造器只new自己,不要开数据库,不要调用getReadableDatabase的操作,
把getReadableDatabase的操作放在具体的insert,remove,delete等的方法体中,这些方法是可以异步调用的,而且往往应该异步调用
举个栗子
**DataSQLHelper .class** public class DataSQLHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "test.db"; private static final int DATABASE_VERSION = 1; public DataSQLHelper (Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String sql = "create table " + TABLE + "( " + BaseColumns._ID + " integer primary key autoincrement, " + ID + " text, " + PASSWORD + " text, " + ACTIVE + " text, " + STATUS + " text);"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (oldVersion >= newVersion) return; String sql = null; if (oldVersion == 1) sql = "alter table " + TABLE + " add note text;"; if (oldVersion == 2) sql = ""; if (sql != null) db.execSQL(sql); } @Override public synchronized void close() { super.close(); } } // ***Test_Java .java*** public class Test_Java extends Activity { DataSQLHelper helData; SQLiteDatabase db; Cursor cursor; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try { helData= new DataSQLHelper(this); cursor = getData(); startManagingCursor(cursor); setContentView(R.layout.view); } catch (Exception ex) { } } // onCreate Ends //因为这里只有一个方法,如果开多个方法的话,那么是不是要判断db是否为空,以及是否打开,在调用db = helData.getReadableDatabase()方法? private Cursor getData() { try { <strong>db = helData.getReadableDatabase();//<span style="color:#ff6666;">这里是不是要if(db == null || db.isOpen() == false)</span></strong> cursor = db.query(DataSQLHelper.TABLE, null, null, null, null, null, null); startManagingCursor(cursor); return cursor; } catch (Exception ex) { System.out.println("Exception Occured : " + ex.toString()); return null; } }
<strong>//这里必须要关闭cursor,关闭db,关闭helper,否则报dbexception异常 </strong>@Override protected void onDestroy() { System.out.println("onDestroy"); super.onDestroy(); if (db!=null){ db.close(); } if (cursor!=null){ cursor.close(); } if ( helData!=null){ helData.close(); } } }

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Die Go-Sprache ist eine effiziente, prägnante und leicht zu erlernende Programmiersprache. Sie wird von Entwicklern aufgrund ihrer Vorteile bei der gleichzeitigen Programmierung und Netzwerkprogrammierung bevorzugt. In der tatsächlichen Entwicklung sind Datenbankoperationen ein unverzichtbarer Bestandteil. In diesem Artikel wird erläutert, wie die Go-Sprache zum Implementieren von Datenbank-Hinzufügungs-, Lösch-, Änderungs- und Abfrageoperationen verwendet wird. In der Go-Sprache verwenden wir normalerweise Bibliotheken von Drittanbietern, um Datenbanken zu betreiben, z. B. häufig verwendete SQL-Pakete, Gorm usw. Hier nehmen wir das SQL-Paket als Beispiel, um vorzustellen, wie die Hinzufügungs-, Lösch-, Änderungs- und Abfragevorgänge der Datenbank implementiert werden. Angenommen, wir verwenden eine MySQL-Datenbank.

So verwenden Sie MySQLi zum Herstellen einer Datenbankverbindung in PHP: MySQLi-Erweiterung einbinden (require_once) Verbindungsfunktion erstellen (functionconnect_to_db) Verbindungsfunktion aufrufen ($conn=connect_to_db()) Abfrage ausführen ($result=$conn->query()) Schließen Verbindung ( $conn->close())

Die polymorphe Hibernate-Zuordnung kann geerbte Klassen der Datenbank zuordnen und bietet die folgenden Zuordnungstypen: Joined-Subclass: Erstellen Sie eine separate Tabelle für die Unterklasse, einschließlich aller Spalten der übergeordneten Klasse. Tabelle pro Klasse: Erstellen Sie eine separate Tabelle für Unterklassen, die nur unterklassenspezifische Spalten enthält. Union-Unterklasse: ähnelt der verbundenen Unterklasse, aber die Tabelle der übergeordneten Klasse vereint alle Spalten der Unterklasse.

Apples neueste Versionen der iOS18-, iPadOS18- und macOS Sequoia-Systeme haben der Fotoanwendung eine wichtige Funktion hinzugefügt, die Benutzern dabei helfen soll, aus verschiedenen Gründen verlorene oder beschädigte Fotos und Videos einfach wiederherzustellen. Mit der neuen Funktion wird im Abschnitt „Extras“ der Fotos-App ein Album mit dem Namen „Wiederhergestellt“ eingeführt, das automatisch angezeigt wird, wenn ein Benutzer Bilder oder Videos auf seinem Gerät hat, die nicht Teil seiner Fotobibliothek sind. Das Aufkommen des Albums „Wiederhergestellt“ bietet eine Lösung für Fotos und Videos, die aufgrund einer Datenbankbeschädigung verloren gehen, die Kameraanwendung nicht korrekt in der Fotobibliothek speichert oder eine Drittanbieteranwendung die Fotobibliothek verwaltet. Benutzer benötigen nur wenige einfache Schritte

Ele.me ist eine Software, die eine Vielzahl verschiedener Köstlichkeiten zusammenführt. Der Händler kann diese sofort nach Erhalt der Bestellung über die Software binden Betriebsmethode Denken Sie daran, die chinesische PHP-Website zu besuchen. Anweisungen zum Binden von WeChat an Ele.me: 1. Öffnen Sie zuerst die Ele.me-Software und klicken Sie nach dem Aufrufen der Startseite auf [Mein] in der unteren rechten Ecke. 2. Klicken Sie dann auf die Seite „Mein“. [Konto] in der oberen linken Ecke; 3. Gehen Sie dann zur Seite mit den persönlichen Informationen, auf der wir Mobiltelefone, WeChat, Alipay und Taobao verknüpfen können. 4. Nach dem letzten Klick wählen wir das WeChat-Konto aus Das muss auf der WeChat-Autorisierungsseite gebunden werden und auf „Einfach zulassen“ klicken.

HTML kann die Datenbank nicht direkt lesen, dies kann jedoch über JavaScript und AJAX erreicht werden. Zu den Schritten gehören das Herstellen einer Datenbankverbindung, das Senden einer Abfrage, das Verarbeiten der Antwort und das Aktualisieren der Seite. Dieser Artikel bietet ein praktisches Beispiel für die Verwendung von JavaScript, AJAX und PHP zum Lesen von Daten aus einer MySQL-Datenbank und zeigt, wie Abfrageergebnisse dynamisch auf einer HTML-Seite angezeigt werden. In diesem Beispiel wird XMLHttpRequest verwendet, um eine Datenbankverbindung herzustellen, eine Abfrage zu senden und die Antwort zu verarbeiten. Dadurch werden Daten in Seitenelemente gefüllt und die Funktion des HTML-Lesens der Datenbank realisiert.

1. Öffnen Sie die PPT-Software und rufen Sie deren Hauptoberfläche auf. 2. Löschen Sie die beiden Eingabefelder, die hier klicken, um einen Titel und einen Untertitel hinzuzufügen. 3. Klicken Sie auf das Menü „Einfügen“ und wählen Sie das Smartart-Tool aus. 4. Öffnen Sie das Dialogfeld „SmartArt-Grafiken auswählen“. 5. Klicken Sie in der Kategorie „Beziehung“ auf „Balance“ und klicken Sie auf „OK“. 6. Fügen Sie ein Bilanzbeziehungsdiagramm in die PPT ein. 7. Geben Sie den erforderlichen Textinhalt für das ausgewogene Beziehungsdiagramm ein. 8. Wählen Sie, ob Sie einen Smartart-Stil hinzufügen möchten. 9. Zu diesem Zeitpunkt wurde in PPT ein ausgewogenes Beziehungsdiagramm erstellt.

PHP ist eine Back-End-Programmiersprache, die in der Website-Entwicklung weit verbreitet ist. Sie verfügt über leistungsstarke Datenbankbetriebsfunktionen und wird häufig zur Interaktion mit Datenbanken wie MySQL verwendet. Aufgrund der Komplexität der Kodierung chinesischer Zeichen treten jedoch häufig Probleme beim Umgang mit verstümmelten chinesischen Zeichen in der Datenbank auf. In diesem Artikel werden die Fähigkeiten und Praktiken von PHP beim Umgang mit chinesischen verstümmelten Zeichen in Datenbanken vorgestellt, einschließlich häufiger Ursachen für verstümmelte Zeichen, Lösungen und spezifischer Codebeispiele. Häufige Gründe für verstümmelte Zeichen sind falsche Einstellungen für den Datenbank-Zeichensatz: Beim Erstellen der Datenbank muss der richtige Zeichensatz ausgewählt werden, z. B. utf8 oder u
