如何使用数据网格视图(Winforms,C#)更新MySQL表?

时间:2018-09-11 03:51:40

标签: c# mysql

我对C#(和一般的编码)还是很陌生,很难将这里发布的类似问题的答案拼凑在一起。

我正在Visual Studio 2017中使用Winforms C#程序。目标是在数据网格中查看MySQL表的设置部分,编辑所有可见值,然后在命中时更新表中的更改一个按钮。

我设法连接到本地MySQL服务器,并在datagrid视图中显示现有数据(取决于输入的特定SQL查询):

//TITLE QUERY
public void runTitleQuery()
{

        string MySQLConnectionString = "datasource=10.1.1.110;port=3306;username=operator;password=;database=cortex;SslMode=none";
        MySqlConnection databaseConnection = new MySqlConnection(MySQLConnectionString);

        string TitleSearch = "SELECT * FROM titles WHERE TITLE_NO = @TenementNumber";

        try
        {
            MySqlCommand cmd = new MySqlCommand(TitleSearch, databaseConnection);
            cmd.CommandTimeout = 60;

            databaseConnection.Open();
            MySqlDataAdapter da = new MySqlDataAdapter(cmd);


            MySqlParameter TenNo = new MySqlParameter();
            TenNo.ParameterName = "@TenementNumber";
            TenNo.Value = textboxSearchByTitle.Text;

            cmd.Parameters.Add(@TenNo);

            DataTable dt = new DataTable();
            da.Fill(dt);

            SurfaceTable.DataSource = dt;
            databaseConnection.CloseAsync();

        }
        catch (Exception e)
        {
            MessageBox.Show("Query failed" + e.Message);
        }
    }

到目前为止很好。

我现在正试图允许数据编辑(如果可能的话,包括添加新行)。点击表格外部的按钮后,修改内容将发送到服务器。

我认为我要出错的地方是绑定网格和未绑定网格与SQL连接之间的某个地方(我仍然不太了解)。

表中的每个条目都有一个唯一的标识符(列称为TAS_ID)。

我的第一个尝试是按照以下方式做些事情:

//Write table to server button
    private void button2_Click(object sender, EventArgs e)
    {

        string SQLCommandString = "UPDATE Tenements WHERE TAS_ID='@TASID'";

        try
            {
            //set string  
            string MySQLConnectionString = "datasource=10.1.1.110;username=operator;password=;database=cortex;SslMode=none";
            MySqlConnection databaseConnection = new MySqlConnection(MySQLConnectionString);

            MySqlCommand cmd2 = new MySqlCommand(SQLCommandString, databaseConnection);
            cmd2.CommandTimeout = 60;

            //Create parameters

            MySqlDataReader MyReader2;

            MyReader2 = cmd2.ExecuteReader();
            MessageBox.Show("Data Updated");
            while (MyReader2.Read())
            {
            }
            databaseConnection.CloseAsync();

        }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

但是,正如您所看到的,我不知道如何用新数据更新行。我尝试创建与每一列相关的参数,但是我感觉这不是正确的方法。

任何帮助将不胜感激!

请让我知道是否需要进一步的信息。

谢谢。

1 个答案:

答案 0 :(得分:0)

首先,您必须演示更新方式。您想要更改所有记录然后保存它们,或者要在编辑后保存每个单元格更新

但是您的错误是:

1。您尚未填写参数(在代码中使用ParameterInfo并将其添加到命令中)

2.update语句必须是这样

update your_table set field_name = @value where identity_filed = @Identity_filed_value