/ / Die angegebene Tabelle (SQL Server CE) ist in C # - C #, Datenbank, SQL-Befehl, Sdf nicht vorhanden

Die angegebene Tabelle (SQL Server CE) existiert nicht in C # - c #, Datenbank, sqlcommand, sdf

Ich verwende eine SQL Server Compact 3.5-Datenbankdatei (.sdf) in C #. Mit dem Code kann ich lesen albums_tbl Wenn ich jedoch aus anderen Tabellen lesen möchte, solange sie vorhanden sind, werden folgende Visual Studio 2008-Fehler angezeigt:

Bildbeschreibung hier eingeben

Das ist mein Code:

void FillAllitems()
{
// 1
// Open connection
SqlCeConnection cnt = new SqlCeConnection(@"Data Source = C:com_honartest1.sdf ");
{
cnt.Open();

// 2
// Create new DataAdapter
using (SqlCeDataAdapter at = new SqlCeDataAdapter("SELECT * FROM testi ", cnt))
{
// 3
// Use DataAdapter to fill DataTable
DataTable tt = new DataTable();
at.Fill(tt);
// 4
// Render data onto the screen
dataGridView2.DataSource = tt;
}
}
}

Wenn ich ersetze albums_tbl mit testi es funktioniert gut! Aber jetzt Fehler für alle anderen Tabellen.

Ich habe gesucht und festgestellt, dass jemand auch dieses Problem hatte, aber ich verstand nicht, was er schließlich tat.

Dies sind die Tabellen:

Bildbeschreibung hier eingeben

Antworten:

0 für die Antwort № 1

Ich kenne keinen anderen Teil Ihres CodesIch denke, die Verbindung kann etwas besser gehandhabt werden, indem sie in einen using-Block eingeschlossen wird, so dass sie automatisch geschlossen wird. Ich habe auch den zusätzlichen Platz im DataSource-Teil entfernt. So wie:

void FillAllitems(){
using (SqlCeConnection cnt = new SqlCeConnection(@"Data Source=C:com_honartest1.sdf")) {
cnt.Open();                                                                            // Open connection
using (SqlCeDataAdapter at = new SqlCeDataAdapter("SELECT * FROM testi", cnt)){        // Create new DataAdapter
DataTable tt = new DataTable();
at.Fill(tt);                                                                   // Use DataAdapter to fill DataTable
dataGridView2.DataSource = tt;                                                 // Render data onto the screen
}
}
}

Ich würde auch die Verwendung eines Befehls-Builders empfehlen:

var sqCB = new SqlCeCommandBuilder(dataAdapter);

so:

void FillAllitems(){
using (SqlCeConnection cnt = new SqlCeConnection(@"Data Source=C:com_honartest1.sdf")) {
cnt.Open();                                                                            // Open connection
using (SqlCeDataAdapter at = new SqlCeDataAdapter("SELECT * FROM testi", cnt)){        // Create new DataAdapter
var sqCB = new SqlCeCommandBuilder(at);
DataTable tt = new DataTable();
at.Fill(tt);                                                                   // Use DataAdapter to fill DataTable
dataGridView2.DataSource = tt;                                                 // Render data onto the screen
}
}
}