数据库脱机时,我没有遇到此错误。我刚刚使用db4free.net在线建立了数据库。
我每次登录都会发生此错误。有人可以指出出什么问题吗?
private void btnLogIn_Click(object sender, EventArgs e)
{
string query = "select * from tbl_accounts where username='" + tbxUsername.Text + "' and password='" + tbxPassword.Text + "'";
MySqlCommand command = new MySqlCommand(query, connection);
MySqlDataAdapter da = new MySqlDataAdapter(command);
DataTable dt = new DataTable();
da.Fill(dt);
try
{
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow dr = dt.Rows[i];
if (dt.Rows.Count > 0)
{
employee_id = (dr["employee_id"].ToString().PadLeft(4, '0'));
fullname = (dr["account_firstname"] + " " + dr["account_lastname"]).ToString();
this.Invoke(new Action(() =>
{
connection.Open();
command.ExecuteNonQuery();
connection.Close();
this.Close();
th = new Thread(openNewForm);
th.SetApartmentState(ApartmentState.STA);
th.Start();
}));
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
这是错误:
已更新: 这是我的连接字符串:
MySqlConnection connection = new MySqlConnection("datasource=db4free.net;Convert Zero Datetime=True;SslMode=none");
答案 0 :(得分:0)
da.Fill(dt);
结论:
您可能应该将tbxPassword.Text
中提取的值格式化为GUID。
而且,如上所述,您也将要防止SQL注入。
答案 1 :(得分:0)
距OP发行日期几乎正好一年,我在尝试使用NuGet软件包MySQL.Data时遇到了相同的错误
的评论中找到了解决方法基本上,可以通过将OldGuids=True;
添加为MySQL数据库连接字符串的一部分来避免该错误,如@noontz所述。
但是,正如@BradleyGrainger所指出的那样,请注意,通过这样做,任何BINARY(16)
列都将以Guid
而不是byte[]
的形式返回。