使用IN操作符使用文本框检索多行
本文关键字:检索 文本 IN 操作符 使用 | 更新日期: 2023-09-27 18:11:34
我用c#在ASP.net中创建了一个网页。这个页面从Oracle 11g数据库中检索数据。在这个页面中,我放了一个文本框,在运行页面的时候,我用它在文本框中输入数字,并相应地从数据库中检索数据。
请参考我的代码:-
protected void Button1_Click(object sender, EventArgs e)
{
OracleConnection con = new OracleConnection("Data Source=10.31.41.103/ORCL;User ID=RL_PET;Password=RL_PET;Unicode=True");
DataSet ds = new DataSet();
con.Open();
OracleDataAdapter a = new OracleDataAdapter("SELECT PALLET_NO,MERGE,RES_WT,GROUP_ID,RACK_NO,WH_CD,DATA_STS,SCAN_DT,INPUT_DT,MPNSEQ_NO,MPN_DT FROM WI_PALLET WHERE PALLET_NO IN ('" + TextBox1.Text + "')", con);
a.Fill(ds);
if (String.IsNullOrEmpty(TextBox1.Text))
{
GridView1.Visible = false;
string display = "Please Enter Pallet No...!!";
ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + display + "');", true);
}
else if (ds.Tables[0].Rows.Count == 0)
{
GridView1.Visible = false;
string display = "Please check Pallet No...!!";
ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + display + "');", true);
}
else
{
GridView1.DataSource = ds;
GridView1.DataBind();
GridView1.Visible = true;
con.Close();
}
}
我在文本框中传递值95403355,95403354,95403353仍然没有从数据库中检索数据。我知道它不是检索,因为它考虑所有的输入作为一个整体,并尝试在数据库中搜索。
我的问题是任何像转义序列这样的解决方案,以便我可以检索数据。
在您的代码中,"PALLET_NO IN ('" + TextBox1.Text + "')"
变成PALLET_NO IN ('95403355,95403354,95403353')
,其中'95403355,95403354,95403353'
是单个varchar2表达式。只需检查代码中的引号。如果PALLET_NO
是数字,则从表达式中删除单引号。
您可以使用另一个临时变量,将文本框值设置为:
string filter = "'" + TextBox1.Text.Replace(",","','") + "'";
你的查询可以变成这样:
OracleDataAdapter a = new OracleDataAdapter("SELECT PALLET_NO,MERGE,RES_WT,GROUP_ID,RACK_NO,WH_CD,DATA_STS,SCAN_DT,INPUT_DT,MPNSEQ_NO,MPN_DT FROM WI_PALLET WHERE PALLET_NO IN (" + filter + ")", con);