我对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);
}
}
但是,正如您所看到的,我不知道如何用新数据更新行。我尝试创建与每一列相关的参数,但是我感觉这不是正确的方法。
任何帮助将不胜感激!
请让我知道是否需要进一步的信息。
谢谢。
答案 0 :(得分:0)
首先,您必须演示更新方式。您想要更改所有记录然后保存它们,或者要在编辑后保存每个单元格更新
但是您的错误是:
1。您尚未填写参数(在代码中使用ParameterInfo并将其添加到命令中)
2.update语句必须是这样
update your_table set field_name = @value where identity_filed = @Identity_filed_value