插入查询时出错
本文关键字:出错 查询 插入 | 更新日期: 2023-09-27 17:57:41
请帮助我在以下语句中查找错误,其中我只从代码中得到错误。
创建表语句
cmmd.CommandText = "CREATE TABLE Users([User_ID] AUTOINCREMENT PRIMARY KEY, UserName Text(50), UserPwdText(200), [IsActive] YesNo, [ModBy] Long REFERENCES Users (User_ID), [ModDate] Date)";
cmmd.ExecuteNonQuery();
在数据库中成功创建了表
我在这里通过代码插入值。
cmmd.CommandText = @"INSERT INTO Users ([UserName], [UserPwd], [IsActive], [ModBy],
[ModDate])VALUES('Admin','kov1ozyKAjas8awoej3oijhrqoi6q=', 'true', '1',
'Datetime.Now.Date')";
cmmd.ExecuteNonQuery();
是个例外
Data type mismatch in criteria expression
首先检查每个字段的数据类型。并确保根据表使用了适当的DataTypes。若一切都好,那个么就试试下面的查询。
cmmd.CommandText = @"INSERT INTO Users ([UserName], [UserPwd], [IsActive],
[ModBy],[ModDate])VALUES('Admin','kov1ozyKAjas8awoej3oijhrqoi6q=',
'true', '1', 'Datetime.Now.Date')";
cmmd.ExecuteNonQuery();
DateTime.Now.Date
。这是一个.Net功能,您不能在字符串中执行它。在这里,您不需要在字符串的开头添加@。同时更改'True' to Yes
试试这个
cmmd.CommandText = "INSERT INTO Users ([UserName], [UserPwd], [IsActive],
[ModBy],[ModDate])VALUES('Admin','kov1ozyKAjas8awoej3oijhrqoi6q=',
Yes, '1', Date())";
cmmd.ExecuteNonQuery();
更新:
建议使用参数。使用参数化查询不仅解决了SQL注入问题,还解决了SQL Server日期本地化问题。
SqlCommand cmd = new SqlCommand(@"INSERT INTO Users ([UserName], [UserPwd], [IsActive], [ModBy], [ModDate])VALUES('Admin','kov1ozyKAjas8awoej3oijhrqoi6q=', 'true', '1', @dateValue)");
cmd.Parameters.AddWithValue("@dateValue", DateTime.Now.Date);
.......
// do same for the other.
在代码中,VALUES后面有两个括号
检查此项:
string format = "yyyy-mm-dd"; //or with date yyyy-mm-dd hh:mm:ss
cmmd.CommandText = string.Format(@"INSERT INTO Users ([UserName], [UserPwd], [IsActive], [ModBy], [ModDate])VALUES('Admin','kov1ozyKAjas8awoej3oijhrqoi6q=', 'true', '1', '{0}')", DateTime.Now.Date.ToString(format));
此外,您还应该使用参数。
您有一个打字错误:
cmmd.CommandText = @"INSERT INTO Users ([UserName], [UserPwd], [IsActive], [ModBy], [ModDate])VALUES('Admin','kov1ozyKAjas8awoej3oijhrqoi6q=', 'true', '1', 'Datetime.Now.Date')";
一个括号,而不是两个。
使用DateTime.Now.Date
,您是否正在尝试获取日期?
试试这个:
cmmd.CommandText = @"INSERT INTO Users ([UserName], [UserPwd], [IsActive], [ModBy], [ModDate]) VALUES ('Admin', 'kov1ozyKAjas8awoej3oijhrqoi6q=', 'true', '1', Datetime.Now.Date)";
cmmd.ExecuteNonQuery();
试试这个,如果你把日期时间放在双引号或单引号里面,它是一个字符串,所以你需要查询看起来像。
cmmd.CommandText = @"INSERT INTO Users ([UserName], [UserPwd], [IsActive],
[ModBy],[ModDate])VALUES('Admin','kov1ozyKAjas8awoej3oijhrqoi6q=',
'true', '1', '" + DateTime.Now.Date + "')";
cmmd.ExecuteNonQuery();
我希望我的查询不会返回任何错误。