无法将“字符串”转换为“整数”

时间:2019-03-27 11:12:07

标签: c#

项目-在本地数据库中添加删除,编辑和搜索。 除了搜索之外,一切都完美无缺。

所有文件名都是一样的,只是感到困惑。对C#一无所知,所以可能真的很愚蠢。

任何帮助将不胜感激。

错误

  

无法将'string'转换为'int'

显示在注释行。

private void button4Search_Click(object sender, EventArgs e)
{
    SqlDataReader mdr;
    string select = "SELECT * FROM users WHERE id = " + textBoxID.Text;
    command = new SqlCommand(select, connection);
    openConnection();
    mdr = command.ExecuteReader();

    if (mdr.Read())
    {
        // ERRORS HERE
        textBoxFileName.Text = mdr.GetString("FileName");
        textBoxFilePath.Text = mdr.GetString("FilePAth");
        textBoxMediaFileType.Text = mdr.GetString("MediaFileType");
        textBoxComments.Text = mdr.GetString("Comments");
    }
    else
    {
        MessageBox.Show("User Not Found");
    }

    closeConnection();
}

3 个答案:

答案 0 :(得分:3)

首先有两个重要提示:

  1. 您的代码已向SQL injection attacks开放。这是危险。请使用参数化查询。
  2. 不要使用SELECT *,但要明确说明要返回的列。这样可以避免不必要的流量,并且可以确保按期望的顺序获取列。

对您的问题:

GetString()索引作为参数。不是列名。您可以使用GetOrdinal()通过名称获取列的索引:

textBoxFileName.Text = mdr.GetString(mdr.GetOrdinal("FileName"));

答案 1 :(得分:0)

首先,请在问题中提供此处的代码。 试试:

mdr.GetValue(read.GetOrdinal("de_DE")).ToString();

答案 2 :(得分:0)

更正代码:

mder = command.ExecuteReader();

进入:

mdr= command.ExecuteReader();

并编辑以下内容:         textBoxFileName.Text = mdr.GetString(mdr.GetOrdinal(“ FileName”));; 同样,所有文本框