ちょっと私はこれに慣れていません。私が拾ったものから、これは機能するはずですが、ローカルデータベースは更新されません。
ローカル データベースを作成したときにTelemarketingDatabaseDataSet
自動生成された があり、テーブルをデータセットにドラッグしたところ、リンクされていると思います。
今、私はこのコードを持っています:
SqlCeConnection connection = new SqlCeConnection();
connection.ConnectionString = TelemarketingTracker.Properties.Settings.Default.TelemarketingDatabaseConnectionString;
TelemarketingDatabaseDataSet ds = new TelemarketingDatabaseDataSet();
// DataTable tbl = new DataTable();
SqlCeDataAdapter adapter = new SqlCeDataAdapter("select * from Calls", connection);
//adapter.InsertCommand = new SqlCeCommand("InsertQuery", connection);
adapter.Fill(ds,"Calls");
DataTable tbl = ds.Tables["Calls"];
//tbl.Columns.Add("caller");
//tbl.Columns.Add("called");
//tbl.Columns.Add("duration");
//tbl.Columns.Add("time");
var row = tbl.NewRow();
row[1] = Convert.ToString(caller);
row[2] = Convert.ToString(called);
row[3] = Convert.ToString(duration);
row[4] = Convert.ToDateTime(time);
tbl.Rows.Add(row);
adapter.Update(ds, "Calls");
connection.Close();
MessageBox.Show("Database should be updated!");
そして、私は DataSet の使用を好むため、SqlCommand の使用には興味がありません。
問題はテーブルのデータ型に関連している可能性がありますか? それを示唆するエラーは表示されませんが、これが問題である可能性があると思います。私のテーブルは次のもので構成されています:
ID - int,key caller - 呼び出されたvarchar - varchar duration - varchar time - datetime
編集:
ここで、insertQuery 行のコメントを外すと、Syste.Data dll で未処理のエラーが発生しました。
通常の挿入コマンドを使用しようとしても、エラーは発生しませんが、データベースは更新されません。デバッグ ウィンドウを閉じた後に違いが生じる場合は、ローカル データベースの横に X が表示されますが、エラーは表示されません。
これは私が試したコマンドです:
using (SqlCeCommand com = new SqlCeCommand("INSERT INTO Calls (caller, called, duration, time) Values(@Caller,@Called,@Duration,@Time)", connection))
{
com.Parameters.AddWithValue("@Caller", row[1]);
com.Parameters.AddWithValue("@Called", row[2]);
com.Parameters.AddWithValue("@Duration", row[3]);
com.Parameters.AddWithValue("@Time", row[4]);
com.ExecuteNonQuery();
}