请帮我在下面的语句中找到错误,我只是从代码中收到错误。
创建表语句
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
答案 0 :(得分:5)
首先检查每个Fields的DataTypes。并确保您已根据表使用了适当的DataTypes。如果每个人都好,那么只需尝试以下查询。
cmmd.CommandText = @"INSERT INTO Users ([UserName], [UserPwd], [IsActive],
[ModBy],[ModDate])VALUES('Admin','kov1ozyKAjas8awoej3oijhrqoi6q=',
'true', '1', 'Datetime.Now.Date')";
cmmd.ExecuteNonQuery();
答案 1 :(得分:4)
您的查询中有两个错误,首先是双括号,第二个错误是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();
答案 2 :(得分:2)
你有一个错字:
cmmd.CommandText = @"INSERT INTO Users ([UserName], [UserPwd], [IsActive], [ModBy], [ModDate])VALUES('Admin','kov1ozyKAjas8awoej3oijhrqoi6q=', 'true', '1', 'Datetime.Now.Date')";
一个括号,而不是两个。
答案 3 :(得分:2)
使用DateTime.Now.Date
,您是否想要获取约会?
试试这个:
cmmd.CommandText = @"INSERT INTO Users ([UserName], [UserPwd], [IsActive], [ModBy], [ModDate]) VALUES ('Admin', 'kov1ozyKAjas8awoej3oijhrqoi6q=', 'true', '1', Datetime.Now.Date)";
cmmd.ExecuteNonQuery();
答案 4 :(得分:2)
更新:
推荐的方法是使用参数。使用参数化查询不仅可以解决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后面有2个括号
检查一下:
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));
你也应该使用参数。
答案 5 :(得分:1)
试试这个,如果你把双引号或单引号放在里面,datetime是一个字符串,所以你需要查询看起来像。
cmmd.CommandText = @"INSERT INTO Users ([UserName], [UserPwd], [IsActive],
[ModBy],[ModDate])VALUES('Admin','kov1ozyKAjas8awoej3oijhrqoi6q=',
'true', '1', '" + DateTime.Now.Date + "')";
cmmd.ExecuteNonQuery();
我希望我的查询不会返回任何错误。