gpt4 book ai didi

c# - 使用 DateTime 时 INSERT INTO 语句中的语法错误

转载 作者:太空宇宙 更新时间:2023-11-03 19:23:35 25 4
gpt4 key购买 nike

我收到“Insert INTO 语句中的语法错误,但我不知道为什么。

我将该声明与我找到的其他人进行了比较,没有发现结构上的差异。唯一的区别是,在这一个中,我试图在我的 MS Access 数据库中保存一个 DateTime。

我在 MS Access 中将我的数据库字段设置为具有通用格式的日期/时间,即 MM/DD/YY HH:MM:SS AM(或 PM)。我的 DateTime 格式设置相同。

当我设置一个断点并执行它时,我可以看到传递的 DateTime 格式是正确的并且与 MS Access 中的通用格式匹配。

我确定问题出在我身上,但如果我能看到它,我会很高兴。这是我的代码:

//method to save user input to database
public static void SaveData(ProgramLoginBOL busObject)
{
try
{
String sSQLCommand = "INSERT INTO ProgramLogin ( " +
"UserName, DateTime) VALUES ('" + busObject.UserName +
"','" + busObject.DtDate + "')";

if (aConnection.State == ConnectionState.Closed)
{
aConnection.Open();
}

OleDbCommand cmd = aConnection.CreateCommand();
cmd.CommandText = sSQLCommand;
// Execute the SQL command
cmd.ExecuteNonQuery();
aConnection.Close();

MessageBox.Show("Data Saved");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
MessageBox.Show("Error! Data was not saved.");
}
}

正如我所说,调试显示 busObject.DtDate 与 MS Access 日期/时间格式匹配

最佳答案

解决该问题的一种方法是改用参数化查询。这样做让提供者担心类型,您不必担心用单引号分隔字符串值(有助于像 O'Donnel 这样的名字)或用 # 日期值。作为奖励,它避免了任何 SQL 注入(inject)攻击。

做这个用途?参数占位符

   string sSQLCommand = "INSERT INTO ProgramLogin ( " +
"UserName, DateTime) VALUES (?,?)"

然后再添加参数

   cmd.Parameters.AddWithValue("?", busObject.UserName);
cmd.Parameters.AddWithValue("?", busObject.DtDate);

关于c# - 使用 DateTime 时 INSERT INTO 语句中的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10353541/

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