我正在尝试创建一个DataGridView,它显示来自SQL数据库(GSM.sdf)的数据,并在按下保存按钮时将对DataGridView所做的更改保存回数据库。数据显示正常,但按下保存按钮时没有任何反应。我一直在关注这个主题的最佳答案:
http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/98bc0b4d-a2ea-4b74-81f0-473da624528a
但它没有成功。这是我的代码:
namespace WindowsFormsApplication5
{
public partial class Zeelot : Form
{
DataTable table = new DataTable();
SqlCeDataAdapter z;
DataSet gSMDataSet = new DataSet();
public Zeelot()
{
InitializeComponent();
}
private void Zeelot_Load(object sender, EventArgs e)
{
string b = @"Data Source =.\SQLEXPRESS;database=GSM;Integrated Security=FALSE;Connection Timeout=30;User Instance=FALSE";
SqlCeConnection conn = new SqlCeConnection(b);
conn.Open();
string cd = "SELECT * FROM PhoneNumbers";
z = new SqlCeDataAdapter(cd, conn);
z.Fill(gSMDataSet, "PhoneNumbers");
table = gSMDataSet.Tables[0];
conn.Close();
dataGridView1.DataSource = table;
}
private void SaveButton_Click(object sender, EventArgs e)
{
SqlCeCommandBuilder local_SqlCommandBuilder = new SqlCeCommandBuilder(z);
local_SqlCommandBuilder.ConflictOption = System.Data.ConflictOption.OverwriteChanges;
z.UpdateCommand = local_SqlCommandBuilder.GetUpdateCommand();
z.Update(((System.Data.DataTable)this.dataGridView1.DataSource));
((System.Data.DataTable)this.dataGridView1.DataSource).AcceptChanges();
}
}
}
答案 0 :(得分:1)
我相信您的问题在于您将DataSource转换为System.Data.DataTable
尝试z.Update(gSMDataSet);
我也不相信你需要AcceptChanges()
答案 1 :(得分:0)
在尝试将更改提交到数据库之前,请尝试调用AcceptChanges()。
你不能在运行时得到任何异常吗?
在尝试将更改提交到数据库之前,请尝试使用断点检查连接对象的当前状态。
此外,如果您想在DataAdapter中使用它们,AFAIK MS建议不要手动创建连接。
DataAdapter的构造函数可以自己创建