C# C MySQL输入字符串的格式不正确
我正在尝试制作连接到MySQL数据库的C WinForm应用程序,我正在将表knjiga中的内容显示到我的datagridview中,以便用户可以输入新数据等。当我按CTRL+F5运行我的程序时,我的窗体运行得很好,我没有问题。但是,当我进入bin/Debug目录并双击运行.exe文件时,我在开始时收到错误消息:输入字符串的格式不正确,单击“确定”后,另一条错误消息显示索引超出范围。必须为非负数且小于集合的大小。参数名称:索引。当我点击错误详细信息时,它告诉我问题出在我的datagridview和第154行上的一些奇怪的消息和方法上,我已经删除了它们,它们不再存在于我的代码中,并且该方法是可禁用的。我不知道为什么 以下是我的代码,以及我如何用MySQL表中的数据填充datagridview:C# C MySQL输入字符串的格式不正确,c#,mysql,string,datagridview,C#,Mysql,String,Datagridview,我正在尝试制作连接到MySQL数据库的C WinForm应用程序,我正在将表knjiga中的内容显示到我的datagridview中,以便用户可以输入新数据等。当我按CTRL+F5运行我的程序时,我的窗体运行得很好,我没有问题。但是,当我进入bin/Debug目录并双击运行.exe文件时,我在开始时收到错误消息:输入字符串的格式不正确,单击“确定”后,另一条错误消息显示索引超出范围。必须为非负数且小于集合的大小。参数名称:索引。当我点击错误详细信息时,它告诉我问题出在我的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。您可能为要生成的版本设置了从“调试”到“发布”的切换。如下所示:谢谢,它正在工作: