2016-08-27 47 views
1

我從數據庫填充下拉列表框。在數據庫中有一些特殊的特許(軟件,管理等)數據。當我點擊顯示按鈕來查看基於選定的值的記錄時,它給出以下錯誤:下拉列表框中給出錯誤的Asp.net特殊字符

'/'應用程序中的服務器錯誤。 's'附近語法不正確。 字符串「'後面未加上引號。 描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。

Exception Details: System.Data.SqlClient.SqlException: Incorrect syntax near 's'. 
Unclosed quotation mark after the character string ' '. 

Source Error: 
Line 208:  SqlDataAdapter da = new SqlDataAdapter(cmd); 
Line 209:  DataSet ds = new DataSet(); 
Line 210:  da.Fill(ds); 
Line 211:  gvUsrEdit.DataSource = ds; 
Line 212:  gvUsrEdit.DataBind(); 

請任何幫助。

+0

發佈我們的代碼從數據庫檢索數據,並結合下拉 – Webruster

+0

謝謝,我會把這兩個 –

+0

我有兩張貼。 –

回答

0

嘗試發送參數這樣

protected void btnShow_Click(object sender, EventArgs e) 
{ 
string d1 = ddlEmpName.Text; 
string d2 = ddlQuater.Text; 
string d3 = ddlyear.Text; 
string d4 = ddlKRA.Text; 
string strquery = "select * from btaprs2 where [email protected] and [email protected] and [email protected] and [email protected] and v10='Active' "; 

if (con.State != ConnectionState.Closed) 
{ 
con.Close(); 
} 
con.Open(); 

SqlCommand cmd = new SqlCommand(strquery, con); 
cmd.Parameters.AddWithValue("@d1", d1); 
cmd.Parameters.AddWithValue("@d2", d2); 
cmd.Parameters.AddWithValue("@d3", d3); 
cmd.Parameters.AddWithValue("@d4", d4);  
SqlDataAdapter da = new SqlDataAdapter(cmd); 
DataSet ds = new DataSet(); 
da.Fill(ds); 
gvUsrEdit.DataSource = ds; 
gvUsrEdit.DataBind(); 
con.Close(); 
} 

你應該總是在你的查詢中使用參數 - 從不將你的SQL語句一起。

SQL注入

SQL注入是代碼注入技術,其利用在一個應用程序的數據庫層中發生的安全 漏洞。當用戶輸入不正確時, 漏洞存在 針對嵌入在SQL 語句中的字符串文字轉義字符進行過濾,或者用戶輸入未強類型,因此意外執行 。它是一種更普遍的 漏洞實例,無論何時編程或腳本語言嵌入在另一個語言中,都會發生這種漏洞。 SQL注入攻擊也 稱爲SQL注入攻擊

+0

謝謝克裏希納,太棒了! –

0
//ON page Load Binding all 4 DDL 
protected void Page_Load(object sender, EventArgs e) 
{ 
string ses1 = Session["s"].ToString(); 
if (!IsPostBack) 
{ 
string str5 = "SELECT distinct v_UserID FROM tblUsrMain WHERE v_UserID= '" + ses1 + "'"; 
da1 = new SqlDataAdapter(str5, con); 
dt1 = new DataTable(); 
da1.Fill(dt1); 
ddlEmpName.DataSource = dt1; 
ddlEmpName.DataTextField = "v_UserID"; 
ddlEmpName.DataValueField = "v_UserID"; 
ddlEmpName.DataBind(); 
} 
} 

//Current Code whcih is giving error 

protected void btnShow_Click(object sender, EventArgs e) 
{ 
string strquery = "select * from btaprs2 where vEmpID='" + ddlEmpName.Text + "' and vQuarter='" + ddlQuater.Text + "' and vyear1='" + ddlyear.Text + "' and tKRA='" +   ddlKRA.Text + "' and v10='Active'"; 
SqlCommand cmd = new SqlCommand(strquery, con); 
SqlDataAdapter da = new SqlDataAdapter(cmd); 
DataSet ds = new DataSet(); 
da.Fill(ds); 
gvUsrEdit.DataSource = ds; 
gvUsrEdit.DataBind(); 
con.Close(); 
} 


//New Code i am thinking about 
protected void btnShow_Click(object sender, EventArgs e) 
{ 
string d1 = ddlEmpName.Text; 
string d2 = ddlQuater.Text; 
string d3 = ddlyear.Text; 
string d4 = ddlKRA.Text; 
string strquery = "select * from btaprs2 where [email protected] and [email protected] and [email protected] and [email protected] and v10='Active' "; 

if (con.State != ConnectionState.Closed) 
{ 
con.Close(); 
} 
con.Open(); 

SqlCommand cmd = new SqlCommand(strquery, con); 
cmd.Parameters.AddWithValue("@d1", d1); 
cmd.Parameters.AddWithValue("@d2", d2); 
cmd.Parameters.AddWithValue("@d3", d3); 
cmd.Parameters.AddWithValue("@d4", d4);  
SqlDataAdapter da = new SqlDataAdapter(cmd); 
DataSet ds = new DataSet(); 
da.Fill(ds); 
gvUsrEdit.DataSource = ds; 
gvUsrEdit.DataBind(); 
con.Close(); 
}