Как читать столбцы из компактной базы данных - PullRequest
0 голосов
/ 20 февраля 2011

Я использую C # 2010 Express и Sql Compact.У меня есть таблица с именем «Записи» и столбец с именем «Имена». Я хочу перечислить эти имена в списке.

Я написал этот код, но последняя строка содержит слова «ExecuteReader: свойство подключения не было инициализировано»«.исключение.

  SqlCeConnection Baglan = new SqlCeConnection("Data Source=|DataDirectory|CeoDatabase.sdf;Password=CeoDB;Persist Security Info=True");

        Baglan.Open();

    SqlCeCommand BarlariAl = new SqlCeCommand("SELECT Names FROM Barlar");

    SqlCeDataReader BarlariOku = BarlariAl.ExecuteReader();

Ответы [ 2 ]

2 голосов
/ 20 февраля 2011

Что касается того, что писать дальше, при условии, что есть список со списком с именем listbox (жирное предположение, учитывая имена переменных), вы должны написать:

while(BarlariOku.Read())
    listbox.Items.Add(BarlariOku["Names"]);

Кроме того, вы не утилизируете свои объекты должным образом. Это должно выглядеть так:

using(var conn = new SqlCeConnection("Data Source=|DataDirectory|CeoDatabase.sdf;Password=CeoDB;Persist Security Info=True"))
{
    conn.Open();

    var comm = new SqlCeCommand("SELECT Names FROM Barlar", conn);
    SqlCeDataReader reader = comm.ExecuteReader();

    while(reader.Read())
        listbox.Items.Add(reader["Names"]);
}
0 голосов
/ 20 февраля 2011

Вы не связываете соединение с командой. Попробуйте код ниже.

SqlCeCommand BarlariAl = new SqlCeCommand("SELECT Names FROM Barlar", Baglan);

Для вывода списка столбцов попробуйте этот код, заимствованный из MSDN (с добавлением закрывающих скобок).

string query = "SELECT [Order ID], [Customer] FROM Orders";
SqlCeConnection conn = new SqlCeConnection(connString);
SqlCeCommand cmd = new SqlCeCommand(query, conn);

conn.Open();
SqlCeDataReader rdr = cmd.ExecuteReader();

try
{
    // Iterate through the results
    //
    while (rdr.Read())
    {
        int val1 = rdr.GetInt32(0);
        string val2 = rdr.GetString(1);
    }
}
finally
{
    // Always call Close when done reading
    //
    rdr.Close();

    // Always call Close when done reading
    //
    conn.Close();
}
...