gpt4 book ai didi

使用 Parameters.AddWithValue 返回参数表示的 C# 和 MySQL 错误

转载 作者:行者123 更新时间:2023-11-29 01:49:51 25 4
gpt4 key购买 nike

通常我不会在这里提问,因为已经有很多很好的答案可以回答我的问题,但是这次我已经搜索了 2 个多小时但没有运气,所以我们开始吧(顺便说一句,很高兴如有错误,请随时为我指明正确的方向。)

我正在尝试对我的数据库进行参数化输入,但我一直在获取占位符参数而不是我分配的动态值。

        string name = //definitely a string value.
string dc = //definitely a string value.
string password = //definitely a string value (hashed, no plaintext.)
string passwordDate = //definitely a date value.
int passwordAge = //definitely a int value.
string role = //definitely a string value.
string shift = //definitely a string value.
string modBy = //definitely a string value.
string newEmpQuery = "INSERT INTO /*table address*/ (`/*Field1*/`,`/*Field2*/`,`/*Field3*/`,`/*Field4*/`,`/*Field5*/`,`/*Field6*/`,`/*Field7*/`,`/*Field8*/`) VALUES ('@name1','@dc1','@pass1','@pwda1','@pwage1','@role1','@shift1','@mod1') ON DUPLICATE KEY UPDATE `/*Field2*/`='@dc2', `/*Field3*/`='@pass2', `/*Field4*/`='@pwda2', `/*Field5*/`='@pwage2', `/*Field6*/`='@role2', `/*Field7*/`='@shift2', `/*Field8*/`='@mod2';";
string modEmpQuery = "INSERT INTO /*table address*/ (`/*Field1*/`,`/*Field2*/`,`/*Field6*/`,`/*Field7*/`,`/*Field8*/`) VALUES ('@name','@dc1','@role1','@shift1','@mod1') ON DUPLICATE KEY UPDATE `/*Field2*/`='@dc2', `/*Field6*/`='@role2', `/*Field7*/`='@shift2', `/*Field8*/`='@mod2';";
if (passwordResetButton.Visible == true && newRadioButton.Checked == false)
{
//Build Query
Program.conn.Open();
using (MySqlCommand data = new MySqlCommand(modEmpQuery, Program.conn))
{
data.Prepare();
data.Parameters.AddWithValue("@dc1", dc);
data.Parameters.AddWithValue("@dc2", dc);
data.Parameters.AddWithValue("@name", name);
data.Parameters.AddWithValue("@role1", role);
data.Parameters.AddWithValue("@role2", role);
data.Parameters.AddWithValue("@shift1", shift);
data.Parameters.AddWithValue("@shift2", shift);
data.Parameters.AddWithValue("@mod1", modBy);
data.Parameters.AddWithValue("@mod2", modBy);

//attempt Data Submission
data.ExecuteReader();

MessageBox.Show("Employee " + name + " successfully modified!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);

}
Program.conn.Close();
ClearFields();
}

这只是一个片段(经过清理以保护无辜的数据库无处不在 [好吧,也许只是我的]),但它看起来如此困惑的部分原因是我一直在尝试穷尽所有可能性。我将参数标记从“@”更改为“?”作为我发现尝试过的一篇文章。我显然也尝试为我的重复参数添加方差。它已经准备好()并且连接已打开,但是在执行时,我总是得到“@dc”而不是我之后分配的值。

最佳答案

我认为您不需要参数周围的 '' 可以尝试删除 INSERT 语句中参数周围的 ''

关于使用 Parameters.AddWithValue 返回参数表示的 C# 和 MySQL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49029477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com