我的 DataGridview 出现问题:我可以通过按下带有以下代码的按钮在 MySql 数据库中保存一些值:
代码
private void button8_Click(object sender, EventArgs e)
{
string connStr = "datasource=localhost;port=3306;username=root;password=123";
MySqlConnection conn = new MySqlConnection(connStr);
try
{
string sql = "select *from test.edata ;";
MySqlDataAdapter da = new MySqlDataAdapter(sql,conn);
MySqlCommandBuilder cb = new MySqlCommandBuilder(da);
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conn;
cmd.CommandText = sql;
MySqlCommand insertCmd =cb.GetInsertCommand().Clone();
insertCmd.CommandText = insertCmd.CommandText +";SELECT last_insert_id() AS id";
insertCmd.UpdatedRowSource = UpdateRowSource.FirstReturnedRecord;
da.InsertCommand = insertCmd;
cb.DataAdapter = null;
DataTable dt = new DataTable();
da.Fill(dt);
DataRow row = dt.NewRow();
row["Familienname"] = "Mustermann";
row["Eid"] = "1";
row["Vorname"] = "Max";
row["age"] = "20";
dt.Rows.Add(row);
da.Update(dt);
conn.Close();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
问题:每当表单关闭或按下按钮时,我是否可以将完整的 DataGridView 保存在数据库中?我不想用我的代码插入这些值。应从单元格中读取值。因此,用户可以更改 UI 上的某些内容,如果他关闭表单,Gridview 将保存在 MySql 数据库中。
我知道这个网站不是一个“为我编码”的网站,但我确信有一种方法可以在我的 MySql 数据库中插入所有值!
提前致谢!
编辑我找到了这个链接:MysqlLINK但示例程序仍然无法运行。
最佳答案
好吧,我几乎解决了这个问题:
代码
private void dgv_CellEndEdit(object sender, DataGridViewCellEventArgs e) { string id = dt.Rows[e.RowIndex]["Eid"] + ""; string col = dt.Columns[e.ColumnIndex].ColumnName; string data = dgv1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value + "";
string sql = string.Format("UPDATE `test`.`edata` SET `{0}` = '{1}' WHERE Eid = {2};", col, data, id);
using (MySqlConnection conn = new MySqlConnection("datasource=localhost;port=3306;username=root;password=123"))
{
conn.Open();
using (MySqlCommand cmd = new MySqlCommand())
{
cmd.Connection = conn;
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
}
conn.Close();
}
}
private void Form4_Load(object sender, EventArgs e) { dt = new DataTable();
using (MySqlConnection conn = new MySqlConnection("datasource=localhost;port=3306;username=root;password=123"))
{
conn.Open();
using (MySqlCommand cmd = new MySqlCommand())
{
cmd.Connection = conn;
cmd.CommandText = "select *from test.edata ;";
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
da.Fill(dt);
}
conn.Close();
}
dgv1 = new DataGridView();
dgv1.AllowUserToAddRows = true;
dgv1.CellEndEdit += new DataGridViewCellEventHandler(dgv_CellEndEdit);
dgv1.CellValidating += new DataGridViewCellValidatingEventHandler(dgv_CellValidating);
dgv1.Dock = DockStyle.Fill;
dgv1.DataSource = dt;
this.Controls.Add(dgv1);
}
}
private void dgv_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
InitializeComponent();
if (e.ColumnIndex == 0)
{
dgv1.CancelEdit();
}
}
对于这个问题我真的很抱歉!愿它能帮助另一个人!感谢大家抽出宝贵的时间!我不会删除我自己的讨论! :) 我希望有人会对这个答案给予好评。无论如何,谢谢您,如果您尝试解决这个问题并祝您有愉快的一天! :)
关于c# - 在运行时将值从 DataGridView 插入到 MySql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26342161/