2

私のデータベースには、主キーID列と、次の3つの他の列を持つテーブルがあります。

を手動で作成してDataTableSQLServerCEデータベースに保存したいと思います。誰かが私のコードを微調整するのを手伝ってもらえますか?

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

データセットはまったく必要ありません。INSERTを使用して、データベースにレコードを配置するだけです。次のようになります。

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 に答える