嘿,我是新手,从我设法获得的内容来看,这应该可以工作,但它不会更新我的本地数据库。
我有一个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!");
拜托,我对使用 SqlCommand 不感兴趣,因为我更喜欢使用 DataSet。
问题可能与我的表的数据类型有关吗?它没有显示错误提示,但我想这可能是问题所在。我的表包括:
ID - int,key caller - 被调用的 varchar - varchar 持续时间- varchar 时间- 日期时间
编辑:
现在,如果我取消注释 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();
}