2

我正在使用的程序是 WAMP 服务器(尤其是它的 mysql 功能)和 MS Visual Studio 2010,我正在用 C# 编程

基本上,这就是我需要并且目前可以对我的应用程序执行的操作。

datagridview在整个项目中有几个 's,第一个很简单,只需按一下按钮,它就可以从数据库中的特定表中加载所有数据。我有另一个表单,我可以插入记录,并且设法创建了一个删除函数,该函数向用户询问 2 个字段(名字和姓氏),然后将这些字段放入查询中并执行命令。

我需要做什么?

我需要能够为表单实现某种方式来更新数据库。我选择通过datagridview控件来执行此操作,以便用户在编辑时可以看到他们正在编辑的内容。

我有以下代码,我尝试根据datagridview控件中的数据更新数据库。

string connString = "server=localhost;User Id=root;database=collegelist;";
MySqlConnection conn = new MySqlConnection(connString);
string selectSQL = "SELECT * FROM collegeemployee";
conn.Open();
MySqlDataAdapter da = new MySqlDataAdapter(selectSQL, conn);
MySqlCommandBuilder builder = new MySqlCommandBuilder(da);
DataTable table = new DataTable(); 
try
{
    dgView2.Rows.RemoveAt(dgView2.CurrentRow.Index);
    da.Update(table);
}
catch (Exception exceptionObj)
{
    MessageBox.Show(exceptionObj.Message.ToString());
}

这段代码的问题(显然是在一个方法中列出的)是虽然可以修改网格,但它无法将数据传回数据库。

4

1 回答 1

1

而不是用空表更新你的数据库,你应该做的是。i.获取数据源。像二。更新/同步数据源和数据适配器这是它应该工作的代码,如果不能,请评论并告诉我问题。

string connString = "server=localhost;User Id=root;database=collegelist;";
MySqlConnection conn = new MySqlConnection(connString);
string selectSQL = "SELECT * FROM collegeemployee";
conn.Open();
MySqlDataAdapter da = new MySqlDataAdapter(selectSQL, conn);
MySqlCommandBuilder builder = new MySqlCommandBuilder(da);
    BindingSource BindingSourceToUpdate = (BindingSource)dgView2.DataSource; // because direct casting to data table was failing in VS2o1o

                 try
                {
    dgView2.Rows.RemoveAt(dgView2.CurrentRow.Index);

                    da.Update((DataTable)BindingSourceToUpdate.DataSource);
                }
                catch(exception)
                 {
                 }
conn.close();
于 2012-09-16T11:32:43.547 回答