2

在我的数据库中,我有一个带有主键标识列的表和 3 个其他列,如下所示。

我想手动创建一个DataTable并将其保存到我的 SQL Server CE 数据库中。任何人都可以帮我调整我的代码吗?

DataTable table1 = new DataTable("MyTable1");
table1.Columns.Add("LastName");
table1.Columns.Add("FirstName");
table1.Columns.Add("SortColumn");
table1.Rows.Add("Doe", "John", 1);
table1.Rows.Add("Doe", "Mary", 2);

DataSet ds = new DataSet("notCritical1");
ds.Tables.Add(table1);

using (SqlCeConnection con = new SqlCeConnection(TestClickOnceApp.classes.ClassDatabase.m_connectionString))
{
    con.Open();
    SqlCeDataAdapter da = new SqlCeDataAdapter("Select * from MyTable1", con);
    da.Fill(ds, "MyTable1");
    da.Update(ds, "MyTable1");
}
4

3 回答 3

3

您根本不需要数据集。只需使用 anINSERT将记录放入数据库中。它应该看起来像这样:

using (SqlCeConnection connection = new SqlCeConnection(connectionString)
{
    connection.Open();
    SqlCeCommand command = connection.CreateCommand();

    command.CommandText = "INSERT INTO <TableName> LastName, FirstName, SortColumn VALUES 'Doe', 'John', '1'";
    command.ExecuteNonQuery();

    connection.Close();
}
于 2012-04-30T20:27:18.100 回答
1

我没有 SqlCompact 来测试,但我想你可以写这样的代码

using (SqlCeConnection con = new SqlCeConnection(connectionString))   
{   
    con.Open();   
    SqlCeCommand cmd = new SqlCeCommand("Select * from MyTable1 Where 1=0", con);
    SqlCeDataAdapter da = new SqlCeDataAdapter();
    da.SelectCommand = cmd;
    SqlCeCommandBuilder cb = new SqlCeCommandBuilder(da);
    da.Update(table1);
}

无需使用数据集

有关基类方法DbDataAdapter.Update(DataTable t)的更多详细信息,请参见此处

于 2012-04-30T20:19:25.213 回答
0

如果我理解正确,你就试错了。您必须执行一条 SQL 语句。DataTable / DataSet 不代表数据库本身。也许这可以帮助你链接

于 2012-04-30T20:13:01.087 回答