【发布时间】:2025-11-29 08:40:01
【问题描述】:
与phpMyAdmin 和c# 合作。
我想用c# 更新phpMyAdmin 中的数据库。但是,我有一个错误:
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法,以便在第 1 行的 'from bucket inner join color on bucket.color_idcolor = color.idcolor' 附近使用
在phpMyAdmin 中,我在同一个数据库中有两个表:bucket 和color。在bucket 表中,我有列:idbucket、volume 和color_idcolor。在color 表中,我有列:idcolor 和name。
在c# 中,我制作了一个windows 窗体,用户可以在其中更新数据库。他们可以更新volume(文本框)和color(组合框),然后按保存按钮将更新存储到数据库中。这是我的代码的几个部分:
private string idBucket;
private string volume;
private string color;
public void TransferData(string idBucket, string volume, string color)
{
this.idBucket = idBucket;
this.volume = volume;
this.color = color;
}
MySqlConnection conector = new MySqlConnection();
public frmChangeBucket()
{
InitializeComponent();
conector.ConnectionString = "server=localhost; database=bucket; uid=root";
}
void ContentCboColor()
{
conector.Open();
MySqlCommand comand = new MySqlCommand();
comand.Connection = conector;
comand.CommandType = CommandType.Text;
comand.CommandText = "select idcolor, name from color";
MySqlDataAdapter da = new MySqlDataAdapter();
DataTable dt = new DataTable();
da.SelectCommand = comand;
da.Fill(dt);
cboColor.DisplayMember = "name";
cboColor.ValueMember = "idcolor";
cboColor.DataSource = dt;
conector.Close();
}
private void btnSave_Click(object sender, EventArgs e)
{
conector.Open();
MySqlCommand comand = new MySqlCommand();
comand.Connection = conector;
comand.CommandType = CommandType.Text;
int result = 0;
volume = txtVolume.Text;
color = cboColor.SelectedValue.ToString();
comand.CommandText = "update bucket set volume=@volume, color=@color.name, from bucket "
+ "inner join color on bucket.color_idcolor = color.idcolor "
+ "where idBucket=@idbucket";
komen.Parameters.AddWithValue("@idbucket", idBucket);
komen.Parameters.AddWithValue("@volume", volume);
komen.Parameters.AddWithValue("@color.name", color);
result += comand.ExecuteNonQuery();
comand.Parameters.Clear();
if (result > 0)
{
MessageBox.Show("You've changed " + result + " data");
}
else
{
MessageBox.Show("You haven't changed any data");
}
conector.Close();
this.Close();
}
在c# 中,我只是在组合框中显示颜色name。首先,用户可以显示数据库中的一些数据。我使用内部连接来显示颜色name。要将更新存储到数据库,我必须再次inner join 吗?请用正确的代码回答。谢谢你的帮助。
【问题讨论】: