-1

私はWinForms C#で作業しています。

何らかの理由で listBox にデータを入力しようとすると、停止し、データベースが破損していると表示されます。修復行を追加し、その後コードを実行しましたが、何も起こりません。リストボックスにデータが入力されていません。

使用しているコードは次のとおりです。

public void button1_Click(object sender, EventArgs e)
    {
        SqlCeConnection cn = new SqlCeConnection(@"Data Source = Database1.mdf");
        cn.Open();
        SqlCeCommand cm = new SqlCeCommand("SELECT * FROM tblprojects ORDER BY Projekt_liste ASC", cn);

        try
        {
            SqlCeDataReader dr = cm.ExecuteReader();

            while (dr.Read())
            {
                ListBox project_list = Application.OpenForms["Form1"].Controls["tabControl1"].Controls["tabPage1"].Controls["Project_list"] as ListBox;
                project_list.Items.Add(dr["Projekt_liste"].ToString());
            }
            cn.Close();
            cn.Dispose();
        }
        catch (Exception ex)
        {
        }
    }

    public void button2_Click(object sender, EventArgs e)
    {

        SqlCeConnection cn = new SqlCeConnection();

        SqlCeEngine engine = new SqlCeEngine("Data Source = Database1.mdf");

        if (false == engine.Verify())
        {
            MessageBox.Show("Database is corrupted.");
            engine.Repair(null, RepairOption.RecoverAllPossibleRows);
        }
    }
4

2 に答える 2

1

マイクロソフトのサイトから

Repair メソッドは、すべてのデータベースの完全なデータ回復を保証するものではありません。一部の形式のデータ破損は、アプリケーションで選択された [修復] オプションに関係なく、完全には修復できません。

これは、ファイルが破損している場合の 1 つです。

また、呼び出しのすぐ上に修復呼び出しを入れて、リストにデータを入力してみてください。

これが役立つ場合があります。

于 2012-10-01T13:17:49.130 に答える
1

たとえば、アイテムをロードしたい場合

1. make sure you have a ListBox on the winform
2. name the ListBox 
3. Create a ListItem 
4 Add the ListItem to the ListBox

while(dr.Read())
{
  ListViewItem obj=new ListViewItem(Convert.ToString(dr[0]),Convert.ToString(dr[1]);
  //in object of ListViewItem give display member at first and give value member at second position 
  listView1.Items.Add(obj); // add object to the listbox
}

ListBox にデータを入力するさまざまな方法を示すために使用できるいくつかのリンクを次に示します。

1 つは Windows で、もう 1 つは ASP.NET を使用している、または使用する予定の場合です。

SQLDataReader の使用時に ListBox にデータを設定する

asp.net SqlDataReader の例: Read() メソッドを使用して ListBox に入力する方法

SqlDataReader を使用して ASP.NET ListBox にデータを設定する

于 2012-10-01T13:38:39.187 に答える