我正在尝试创建连接到我的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在其他计算机上安装我的程序。我只需要摆脱这个恼人的错误。如果这里有一些好心灵,请帮助我。