0

.sdf在 C# 中使用 SQL Server Compact 3.5 数据库文件 ( )。使用我可以读取的代码,albums_tbl但是当我想从其他表中读取它们存在时,Visual Studio 2008 错误如下:

在此处输入图像描述

这是我的代码:

void FillAllitems()
{
     // 1
     // Open connection
     SqlCeConnection cnt = new SqlCeConnection(@"Data Source = C:\com_honar\test1.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;
         }
    }
}

当我用它替换albums_tbl时,testi它工作得很好!但现在任何其他表的错误。

我已经搜索过,发现有人也有这个问题,但我不明白他们最后做了什么。

这些是表格:

在此处输入图像描述

4

1 回答 1

0

由于我不知道您的代码的任何其他部分,我认为,可以通过将连接包含在 using 块中来更好地处理连接,以便它自动关闭。我还删除了 DataSource 部分中的额外空间。像这样:

void FillAllitems(){
    using (SqlCeConnection cnt = new SqlCeConnection(@"Data Source=C:\com_honar\test1.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
        }
    }
}

我还建议使用命令生成器:

var sqCB = new SqlCeCommandBuilder(dataAdapter);

像这样:

void FillAllitems(){
    using (SqlCeConnection cnt = new SqlCeConnection(@"Data Source=C:\com_honar\test1.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
        }
    }
}
于 2017-06-21T05:46:59.190 回答