C# C MySQL输入字符串的格式不正确

C# C MySQL输入字符串的格式不正确,c#,mysql,string,datagridview,C#,Mysql,String,Datagridview,我正在尝试制作连接到MySQL数据库的C WinForm应用程序,我正在将表knjiga中的内容显示到我的datagridview中,以便用户可以输入新数据等。当我按CTRL+F5运行我的程序时,我的窗体运行得很好,我没有问题。但是,当我进入bin/Debug目录并双击运行.exe文件时,我在开始时收到错误消息:输入字符串的格式不正确,单击“确定”后,另一条错误消息显示索引超出范围。必须为非负数且小于集合的大小。参数名称:索引。当我点击错误详细信息时,它告诉我问题出在我的datagridview

我正在尝试制作连接到MySQL数据库的C WinForm应用程序,我正在将表knjiga中的内容显示到我的datagridview中,以便用户可以输入新数据等。当我按CTRL+F5运行我的程序时,我的窗体运行得很好,我没有问题。但是,当我进入bin/Debug目录并双击运行.exe文件时,我在开始时收到错误消息:输入字符串的格式不正确,单击“确定”后,另一条错误消息显示索引超出范围。必须为非负数且小于集合的大小。参数名称:索引。当我点击错误详细信息时,它告诉我问题出在我的datagridview和第154行上的一些奇怪的消息和方法上,我已经删除了它们,它们不再存在于我的代码中,并且该方法是可禁用的。我不知道为什么

以下是我的代码,以及我如何用MySQL表中的数据填充datagridview:

private string[] kolone_knjiga = new string[] { "ID knjige", "Autor knjige", "Naziv knjige", "Žanr", "Jezik", "Donator", "Datum upisa", "Format", "Broj stranica", "Izdavač", "Godina izdavanja", "Vrijednost knjige (kn)", "Polica odlaganja", "Rashod/Otpis", "Broj knjiga" };
    private void showTable(string novi_query)
    {
        DataTable tabela = new DataTable();
        foreach (string x in kolone_knjiga) { tabela.Columns.Add(x); }
        MySqlConnection conDataBase = new MySqlConnection(conString);
        MySqlCommand cmdDataBase = new MySqlCommand(novi_query, conDataBase);
        MySqlDataReader myReader;
        try
        {
            conDataBase.Open();
            myReader = cmdDataBase.ExecuteReader();
            while (myReader.Read())
            {
                DataRow red = tabela.NewRow();
                red[0] = myReader.GetString("id_knjige");                
                red[1] = castAutor(myReader.GetInt32("autor_knjige"));       
                red[2] = myReader.GetString("naziv_knjige");
                red[3] = castZanr(myReader.GetInt32("zanr"));       
                red[4] = castJezik(myReader.GetInt32("jezik"));
                red[5] = castDonator(myReader.GetInt32("donator_knjige"));
                red[6] = myReader.GetDateTime("datum_upisa");
                red[7] = castFormat(myReader.GetInt32("format"));
                red[8] = myReader.GetInt32("broj_stranica");
                red[9] = castIzdavac(myReader.GetInt32("izdavac"));
                red[10] = myReader.GetInt32("godina_izdavanja");
                red[11] = myReader.GetString("vrijednost_knjige");
                red[12] = myReader.GetString("polica_odlaganja");
                if (myReader.IsDBNull(13))
                {
                    red[13] = "";
                }
                else
                {
                    red[13] = myReader.GetString("rashod_otpis");
                }
                red[14] = myReader.GetInt32("inventarni_broj");
                tabela.Rows.Add(red);
            }
            myReader.Close();
            BindingSource bSource = new BindingSource();
            bSource.DataSource = tabela;
            dataGridView1.DataSource = bSource;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        finally { conDataBase.Close(); }
}
这些castXYZ方法之所以存在,是因为我想显示作者的真实姓名,而不是他们的ID,它们工作正常

以下是MySQL中我的表的图片: 以下是我的错误消息的屏幕截图:


我真的很绝望,因为我找不到修复错误的方法,因为我的程序在VisualStudio中运行良好,当我调试它时,我不会有任何错误。如果你问我为什么要从bin/Debug目录打开我的程序,我需要通过高级安装程序在其他计算机上安装我的程序。我只需要摆脱这个恼人的错误。如果这里有一些好的灵魂,请帮助我。

如果您删除了一个涉及的方法,那么您可能没有最新的版本?您是否可能在VisualStudio中从调试切换到发布?如果您还没有这样做,请尝试删除bin/Debug文件夹的内容并重新生成。首先,我想感谢您的回答。我照你说的做了,我删除了文件,当我重建我的程序时,我的.exe文件不再在bin/Debug目录中。Exe文件现在位于bin/Release目录下,当我运行该.Exe文件时,它就像charm一样工作,没有错误消息。我是否应该在高级安装程序项目中使用该文件,并且bin/Debug目录中不再有.exe文件,这样可以吗?请查看您的Visual Studio。您可能为要生成的版本设置了从“调试”到“发布”的切换。如下所示:谢谢,它正在工作: