C# 在crystal reports中按发票ID进行搜索

C# 在crystal reports中按发票ID进行搜索,c#,sql-server,crystal-reports,C#,Sql Server,Crystal Reports,我只想看到我输入的发票ID的数据,所以我尝试了这段代码 Crystal_Bill cr = new Crystal_Bill(); SqlConnection conect = new SqlConnection("Data Source=DESKTOP-R34C6VV\\SQL;Initial Catalog=Restaurant;Integrated Security=True"); string sql = "Select * from Or

我只想看到我输入的发票ID的数据,所以我尝试了这段代码

        Crystal_Bill cr = new Crystal_Bill();
        SqlConnection conect = new SqlConnection("Data Source=DESKTOP-R34C6VV\\SQL;Initial Catalog=Restaurant;Integrated Security=True");
        string sql = "Select * from Orders where InvoiceID='"+PrepareBill_txt1.Text+"'";
        DataSet dt = new DataSet();
        SqlDataAdapter adapter = new SqlDataAdapter(sql,conect);
        adapter.Fill(dt,"Orders");
        cr.SetDataSource(dt.Tables["Orders"]);
        open.crystalReportViewer1.ReportSource = cr;
Print open = new Print();
open.SHow();
但它没有工作,我仍然得到数据库中的所有数据,这些代码有问题吗?有人能修好吗?谢谢 这是我的数据库

CREATE TABLE [dbo].[Orders] (
[InvoiceID] INT          NOT NULL,
[ItemNO]    INT          NOT NULL,
[Category]  VARCHAR (50) NULL,
[ItemName]  VARCHAR (50) NULL,
[Price]     FLOAT (53)   NULL,
[Qty]       INT          NOT NULL,
[SubTotal]  FLOAT (53)   NULL,
CONSTRAINT [Orders_FK1] FOREIGN KEY ([InvoiceID]) REFERENCES [dbo].[Invoice] ([InvoiceID])

))

>P>按照您的代码,您在SQL查询中传递“强”发票ID <强>作为参数值,您的发票ID有“代码> INT/CODE >数据类型,并且您试图通过查询中的单个引用传递它,以便将发票ID视为<代码> VARCHAR < /代码>值。您可以删除单引号,然后重试。那可能对你有帮助

i.g:

string sql = "Select * from Orders where InvoiceID="+ PrepareBill_txt1.Text +"";

按照您的代码,您在SQL查询中传递“强”发票ID <强>作为参数值,您的发票ID有“代码> INT/CODE >数据类型,并且您试图通过查询中的单个引用传递它,以便将发票ID视为<代码> VARCHAR < /代码>值。您可以删除单引号,然后重试。那可能对你有帮助

i.g:

string sql = "Select * from Orders where InvoiceID="+ PrepareBill_txt1.Text +"";

在bobby tables访问之前,您需要阅读、理解并开始在查询中使用参数。另外,您应该将连接和命令对象包装到USING语句中。您的查询看起来还可以。检查
InvoiceID
。它是否获得了
PrepareBill\u txt1.Text
的精确值。正如肖恩所说,有一件事你应该使用参数化查询来防止SQL注入。在bobby tables来访之前,你需要阅读、理解并开始在你的查询中使用参数。另外,您应该将连接和命令对象包装到USING语句中。您的查询看起来还可以。检查
InvoiceID
。它是否获得了
PrepareBill\u txt1.Text
的精确值。正如肖恩所说,有一件事应该使用参数化查询来防止SQL注入。