Hallo!
Ist jetzt mindestens ein Jahr her als ich zuletzt diese Seite besucht habe
Naja, ich habe in dieser Zeit viel gelernt (was BlueCobold sicher viel besser gefällt :thumbsup
, habe aber doch wieder ein Problem...
Ich habe eine Datei "main.db" (SQL). Ich will aus dieser den Table "Messages" lesen, aber nur diese 3 Columns: "author", "timestamp", "body_xml".
Das ganze soll dann in eine ListView reingeschrieben werden.
Habe keinen Plan wie man SQL benutzt und das dann auch noch in C#
Habe das via Google gefunden:
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
baseDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\skype\\" + tb_dirName.Text + "\\main.db";
MessageBox.Show(baseDir);
// Change sql query and table name
string sql = "Select author,timestamp,body_xml from Messages";
SqlConnection cnn = new SqlConnection(baseDir);
cnn.Open();
SqlCommand cmd = new SqlCommand(sql, cnn);
SqlDataReader Reader = cmd.ExecuteReader();
lw_messages.Items.Clear();
while (Reader.Read())
{
ListViewItem lv = new ListViewItem(Reader.GetInt32(0).ToString());
lv.SubItems.Add(Reader.GetString(1));
lv.SubItems.Add(Reader.GetString(2));
lw_messages.Items.Add(lv);
}
Reader.Close();
cnn.Close();
}
|
Wenn ich jetzt mein Programm starte dann bekomme ich folgende Fehlermeldung:
Zusätzliche Informationen: Das Format der Initialisierungszeichenfolge stimmt nicht mit der Spezifikation überein, die bei Index '0' beginnt.
Habe keinen Plan was das genau zu bedeuten hat... xD Ist mein Ansatz überhaupt richtig?
EDIT: Bin weiter (glaub ich)
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
baseDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\skype\\" + tb_dirName.Text + "\\main.db";
SQLiteConnection connection = new SQLiteConnection();
connection.ConnectionString = "Data Source=" + baseDir;
connection.Open();
SQLiteCommand command = new SQLiteCommand(connection);
command = new SQLiteCommand(connection);
// Auslesen des zuletzt eingefügten Datensatzes.
command.CommandText = "SELECT author, timestamp, body_xml FROM Messages";
SQLiteDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine("Dies ist der {0}. eingefügte Datensatz mit dem Wert: \"{1}\"", reader[0].ToString(), reader[1].ToString());
}
// Beenden des Readers und Freigabe aller Ressourcen.
reader.Close();
reader.Dispose();
command.Dispose();
connection.Close();
connection.Dispose();
|
Leider sagt der mit jetzt:
Ein Ausnahmefehler des Typs "System.BadImageFormatException" ist in System.Data.SQLite.dll aufgetreten.
Zusätzliche Informationen: Es wurde versucht, eine Datei mit einem falschen Format zu laden. (Ausnahme von HRESULT: 0x8007000B)