【问题标题】:i got the error in the query that " incorrect syntax error near '#' how to solve it我在查询中收到错误“'#'附近的语法错误错误如何解决
【发布时间】:2014-07-08 08:49:41
【问题描述】:

我在查询中收到错误“'#'附近的语法错误如何解决它

代码:

cmd = new SqlCommand("SELECT 
                    (invoiceNo) as [Invoice No],
                    (InvoiceDate) as [Invoice Date],
                    (Sales.CustomerID) as [Customer ID],
                    (CustomerName) as [Customer Name],
                    (GrandTotal) as [Grand Total],
                    (TotalPayment) as [Total Payment],
                    (PaymentDue) as [Payment Due] 
                    from Sales,Customer 
                        where 
                           Sales.CustomerID=Customer.CustomerID 
                        and 
                           InvoiceDate between #" + DateTimePicker2.Text + "# And #" + DateTimePicker1.Text + "# and PaymentDue > 0 
                        order by 
                           InvoiceDate desc", con);

【问题讨论】:

  • 格式化?问题在哪里?你试过什么?
  • 我在查询中得到错误“'#'附近的语法错误错误如何解决它
  • 您使用哪种 DBMS?我把你的# 稀释成'
  • # 用于 JET 而不是 T-SQL。只需使用参数,就不必连接字符串,让自己对 SQL 注入敞开心扉。这不是 PHP。
  • SQL 是一种查询语言。它不是数据库产品的名称。每个关系数据库(Oracle、Postgres、DB2、Firebird、Microsoft SQL Server 等)都是“SQL 数据库”

标签: c# sql sql-server


【解决方案1】:

如果您使用TSQL,我认为您应该将date 作为字符串传递。但是,我不确定您是否需要任何时间部分,您可能需要修改tostring中的格式

cmd = new SqlCommand("SELECT 
                    (invoiceNo) as [Invoice No],
                    (InvoiceDate) as [Invoice Date],
                    (Sales.CustomerID) as [Customer ID],
                    (CustomerName) as [Customer Name],
                    (GrandTotal) as [Grand Total],
                    (TotalPayment) as [Total Payment],
                    (PaymentDue) as [Payment Due] 
                    from Sales,Customer 
                        where 
                           Sales.CustomerID=Customer.CustomerID 
                        and 
                           InvoiceDate between '" + DateTimePicker2.Value.ToString("yyyyMMdd") + "' 
                        And '" + DateTimePicker1.Value.ToString("yyyyMMdd") + "' and PaymentDue > 0 
                        order by 
                           InvoiceDate desc", con);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多