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

时间:2014-04-04 22:25:13

标签: c# mysql string datagridview

我正在尝试创建连接到我的MySQL数据库的C#WinForm应用程序,我正在显示来自我的表格的内容" knjiga"进入我的datagridview所以用户可以输入新数据等。当我按CTRL + F5运行我的程序时,我的表单运行完美,我没有问题。但是,当我进入bin / Debug目录并使用doubleclick运行.exe文件时,我在启动时收到错误消息:"输入字符串格式不正确"单击“确定”后,显示另一条错误消息"索引超出范围。必须是非负数且小于集合的大小。参数名称:index。"当我点击错误详细信息时,它显示我的问题是我的datagridview和第154行的一些奇怪的消息和我删除的方法,并且在我的代码中不再存在,该方法是DisableTable()。我不知道为什么?

这是我的代码,以及我如何使用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中的表格的图片:http://i.gyazo.com/0effbd5b3f55f4f64483dea911214894.png
以下是我的错误消息的屏幕截图:http://i.gyazo.com/322869385c86f19e4bf661f8c5c02b02.png http://i.gyazo.com/d011ae9d94c7fb8e8edc82a9f3b553ae.png

我变得非常绝望,因为我无法找到修复错误的方法,因为我的程序在Visual Studio中工作正常,当我调试它时我不会犯任何错误。如果你问我为什么要从bin / Debug目录打开我的程序,我需要通过Advanced Installer在其他计算机上安装我的程序。我只需要摆脱这个恼人的错误。如果这里有一些好心灵,请帮助我。

0 个答案:

没有答案