使用.NETCF以编程方式添加和更新记录

时间:2009-04-22 12:31:53

标签: vb.net windows-mobile compact-framework

好的 - 我已经用40种不同的方式措辞了这个搜索,我似乎迷失在这里。

我发现的每个例子都很高兴您可以轻松地拖放数据网格并让用户填写它 - 然后它们就会停止! 我知道如何通过LINQ做我要问的一切。这显然不会在这里翻译。我真的应该首先学习ADO.NET,然后 LINQ,但是NOoooo ......

我需要知道如何在设备上使用SQL CE数据库在.NETCF(Windows Mobile 5)中执行以下操作。

  1. 添加新记录并使用我提供的数据填充部分或全部字段。我不需要向数据网格添加记录 - 有时用户甚至不会看到记录。如何添加新记录 - 将数据放入其中并保存? 例如:创建一个新的交付记录,例如,让程序将日期存储在一个字段中,将数字存储在另一个字段中。

  2. 搜索记录,然后更新其中的数据。 再一次,使用LINQ我可以轻松地做到这一点 - 我不能在我的生活中找到任何没有它的例子。 我可以找到许多填充数据绑定字段网格的示例,让用户进行更改然后将其保存。我不需要这样做。

  3. 假设我需要搜索满足条件的一条记录(customerID = 10和orderID = 1234),然后在找到该记录时(if)更新其中的字段。

    如果您需要更多信息,请与我们联系。我做了很多阅读,似乎错过了什么!

    提前致谢...

3 个答案:

答案 0 :(得分:4)

对于#1,有几种方法。两种简单,常见的方式是:

使用SqlCeResultset,用它创建一行,然后插入。

using(SqlCeConnection connection = new SqlCeConnection(myConnString))
using (SqlCeCommand cmd = new SqlCeCommand())
{
    connection.Open();
    cmd.CommandText = "MyTable";
    cmd.CommandType = CommandType.TableDirect;
    cmd.Connection = Connection;
    SqlCeResultSet rs = cmd.ExecuteResultSet(ResultSetOptions.Updatable);

    SqlCeUpdatableRecord record = rs.CreateRecord();

    // do something to set your values in the record

    rs.Insert(record);
}

使用SqlCeCommand,设置命令SQL并调用ExecuteNonQuery。

using (SqlCeConnection connection = new SqlCeConnection(myConnString))
using (SqlCeCommand cmd = new SqlCeCommand())
{
    connection.Open();
    cmd.CommandText = "INSERT INTO MyTable(Foo) VALUES('bar')";
    cmd.CommandType = CommandType.Text;
    cmd.Connection = Connection;
    cmd.ExecuteNonQuery();
}

对于#2来说,它并没有太大的不同。使用可更新的结果集,查找记录,修改并调用Update或构建SQL,并使用ExecuteScalar或ExecutNonQuery通过命令发送它。代码与上面的代码相似,我将留给你解决。

快速搜索“SqlCeResultSet”和“示例”或“更新示例”会产生大量相关结果。

答案 1 :(得分:0)

谢谢,

在此代码和此代码之间,我想我正在路上。

Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click

    Dim con As SqlCeConnection

    con = New SqlCeConnection(("Data Source = " & Me.NorthwindDatabaseFullPath))
    con.Open()

    Dim sqlcdm As String = "INSERT INTO Orders VALUES(999, 'ALFKI', 1, 'RUDEDOG', '', '', '', '', '', 2, '11/15/1967', '11/16/1967', '11/17/1967', '23')"

    Dim SqlCeCommand As New SqlCeCommand(sqlcdm, con)

    SqlCeCommand.ExecuteNonQuery()

End Sub

答案 2 :(得分:0)

对于搜索本书的其他人来说,这本书也有一个非常好的章节: http://my.safaribooksonline.com/0321174046

我仍在努力解决这个问题,但取得了很好的进展,

感谢您的帮助。