我使用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,但是数据无法从数据库中检索。 我知道它没有检索,因为它将所有输入视为整体并尝试在数据库中搜索。
我的问题是任何解决方案,如转义序列,以便我可以检索数据。
答案 0 :(得分:0)
您可以使用另一个临时变量,将文本框值放在其中:
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);
答案 1 :(得分:0)
在您的代码中"PALLET_NO IN ('" + TextBox1.Text + "')"
变为PALLET_NO IN ('95403355,95403354,95403353')
,其中'95403355,95403354,95403353'
是单个varchar2表达式。只需检查代码中的引号即可。如果PALLET_NO
是数字,则从in-expression中删除单引号。