2013-06-12 48 views
0

我正在嘗試使用下面的代碼在我的數據庫中搜索員工姓名。但我得到了一個錯誤,如「無效的列名」。但我可以使用相同的編碼找到一個整數字段。從SQL數據庫中獲取錯誤的記錄爲「無效的列名稱」?

源代碼:

protected void btnSearch_Click(object sender, EventArgs e) 
{ 
    cnn.ConnectionString = "Data Source=.;Initial Catalog=Students;Integrated Security=True"; 
    cnn.Open(); 

    string sqlStr = "select * from emp where Name="+txtName.Text+""; 
    SqlDataAdapter da = new SqlDataAdapter(sqlStr,cnn); 
    DataSet ds = new DataSet(); 
    da.Fill(ds); 

    if (ds.Tables[0].Rows.Count != 0) 
    { 
     msgLbl.Text = "Record found!"; 
    } 
    else 
    { 
     msgLbl.Text = "Record not found!"; 
    } 
} 
+1

你的代碼是非常,非常容易受到SQL注入。 – rikitikitik

+0

歡迎來到SO。請避免以下內容:SQL注入示例代碼,缺少'using'語句/未關閉文件/ DB連接的示例代碼,「謝謝你的註釋」和標題中的標記。 –

+2

在你的emp表中你有一個列名作爲Name? – Karthik

回答

4

通常你會組裝sqlStr爲:圍繞搜索項

string sqlStr = "select * from emp where Name='"+txtName.Text+"'";

注單引號。

但是,SQL注入的評論暗示您的表述應該是:

string sqlStr = "select * from emp where [email protected]";

其次:

da.Parameters.add(new SQLParameter("@StudentName", (object)txtName.text));

0
private void btnsearch_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      Dbconnection db = new Dbconnection(); 

      DataTable dt = db.getTable("Select * from view_Cust where CustomerNo=" + txtCustomerNo.Text + ""); 

      if (dt.Rows.Count > 0) 
      { 
       Cust_Id = (int)dt.Rows[0]["Cust_ID"]; 
       txtCustomerName.Text = dt.Rows[0]["Name"].ToString(); 

       DataTable dt1 = db.getTable("Select * from view_CustomerBalance where CustomerNo=" + txtCustomerNo.Text + ""); 

       if (dt1.Rows.Count > 0) 
       { 

        txtCustomerBalance.Text = dt1.Rows[0][2].ToString(); 
        btnsave.Text = "Update"; 

       } 
      } 
      else 
      { 
       MessageBox.Show("Record Not Found..."); 

      } 
     } 
     catch (Exception e1) 
     { 
      MessageBox.Show(e1.Message); 

     } 


    } 
相關問題