0

在 mysql 中,我设置了这个 SET sql_mode = 'ANSI'; 我的查询是这样的:

select username, password from "user" where username = 'admin' 
 and password = 'password123'

并且此查询在 mysql 和 mssql 中成功运行。但问题是我有问题

Sqlcommand cmd=new Sqlcommand()
cmd.commanttext=:select username, password from "user" where username = 'admin' 
 and password = 'password123'";

当我使用 adp.fill(ds) 时,它给了我 sql 语法错误。

那我该如何解决。还要记住 MYtable 名称是 :=user 这是 MSSQL 和 MYSQL 保留关键字。那么我该如何解决这个问题?

4

2 回答 2

1

如果您使用的是 SQL Server(因为存在 SqlCommand),请编写:

Sqlcommand cmd = new Sqlcommand();
cmd.CommandText = "select username, password from " + 
                  "[user] where username = 'admin' " + 
                  "and password = 'password123'";

在 Sql Server 中,要分隔保留关键字,请使用几个方括号。
在 MySql 中,您使用反引号。

如果您的代码应该与两个数据库一起使用,那么您应该从DbCommandBuilder基类的属性 QuotePrefix 和 QuoteSuffix 中查看此信息,并尝试使用适当的字符正确格式化您的查询

于 2013-10-07T14:40:37.487 回答
1

使用带有参数化查询的 sql server ..

Sqlcommand cmd = new Sqlcommand();
cmd.CommandText = "select username, password from user where username = @admin and password = @pass";
cmd.Parameters.AddWithValue("@admin", "admin");
cmd.Parameters.AddWithValue("@pass", "password123");
于 2013-10-07T14:42:59.187 回答