0

以下のコードを使用して、データベースで従業員名を検索しようとしています。しかし、「無効な列名」のようなエラーが発生しました。しかし、同じコーディングを使用して整数フィールドを見つけることができます。

ソースコード:

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!";
    }
}
4

2 に答える 2

4

通常、sqlStr は次のように組み立てます

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

。 検索用語を一重引用符で囲むことに注意してください。

ただし、SQL インジェクションのコメントは、式が次のようになる必要があることを暗示しています

string sqlStr = "select * from emp where Name=@StudentName";



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

于 2013-06-12T04:52:18.720 に答える
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);

        }


    }
于 2016-09-28T06:20:03.030 に答える