【问题标题】:"Specified Cast is invalid" Error in WinForm applicationWinForm 应用程序中的“指定转换无效”错误
【发布时间】:2016-03-19 04:31:24
【问题描述】:

我使用的是 Microsoft Visual Studio Community 2015 版。关于这个问题有很多问题,但我的问题并没有完全涵盖。基本上我正在使用 MySql(phpmyadmin - wamp) 数据库在 Windows 窗体应用程序 (C#) 中工作。我正在创建一个简单的 Windows 窗体应用程序来获取输入、更新/删除数据、在数据网格视图中显示元素并搜索任何记录。我在更新记录时遇到问题。编译器不断给我同样的错误,即; “指定的演员阵容无效”。我的代码如下: .

private void button_update(object sender, EventArgs e)
{
try
   { 
    MySqlConnection cn = new MySqlConnection("server=localhost;port=3306;database=hyder;uid=root;Encrypt=false;AllowUserVariables=True;Usecompression=True;");
    int id = (int)dataGridView1.SelectedRows[0].Cells[0].Value;
    cn.Open();
    MySqlCommand cmd = new MySqlCommand();
    cmd.Connection = cn;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "update record set r_name='" + textBox1.Text + "',r_address='" + textBox2.Text + "',r_phone='" + textBox3.Text + "',r_comment='" + textBox4.Text + "' where r_id='" + id;
    cmd.ExecuteNonQuery();
    MessageBox.Show("Record Updated!");
    cn.Close();
 }
catch (Exception x) { MessageBox.Show("Error:" + x.Message); }
}

这段代码有什么问题?

【问题讨论】:

  • 你得到错误的那一行是?
  • 你用调试器运行过吗?它专门在哪一行引发错误?我怀疑int id = ... - (int)dataGridView1.SelectedRows[0].Cells[0].Value 的数据类型是什么?
  • 我建议你研究一下“SQL注入”和“参数化查询”这两个术语;像这样构建你的查询字符串是不好的做法,并且会在某些时候咬你。
  • 已经咬了,看看id后面少了的右引号...
  • 这是运行时错误还是编译器错误?剂量项目构建,当您单击更新按钮时会引发错误?

标签: c# mysql winforms


【解决方案1】:

尝试替换

int id = (int)dataGridView1.SelectedRows[0].Cells[0].Value;

int id = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[0].Value);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    相关资源
    最近更新 更多