Gowtham
Gowtham

Reputation: 25

Need to find ID number from database using string in c#

I need to get data from label which i had got back from previous page using Sessions from that label i need to use it to find ID for that data for example if Label contain word 'IT' it need to find its ID in database D_ID=5 code is given below

public partial class FinalFeedback1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        GetDataFromSession();
        GetDID();
        AddDynamicLabels();
    }

public void GetDID()
{
    var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        SqlDataReader myReader1 = null;
        string depart = "select D_ID from Department where D_Name= " + Label8.Text + "";
        SqlCommand cmd1 = new SqlCommand(depart, connection);
        myReader1 = cmd1.ExecuteReader(); // i am getting error here "Invalid column name 'IT'"
        while (myReader1.Read()) 
        {
            Label9.Text = myReader1["D_ID"].ToString(); 
        }
    }
}
public void AddDynamicLabels()
{
    var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        SqlDataReader myReader2 = null;
        string CmdString = "Select Q_ID,Question_Data FROM QuestionTable where D_ID=" + Label9.Text + "";
        SqlCommand cmd = new SqlCommand(CmdString, connection);
        myReader2 = cmd.ExecuteReader();
        while (myReader2.Read())
            {
                QID1.Text = myReader2["Q_ID"].ToString();
                if (QID1.Text == ("1"))
                {
                    Question1.Text = myReader2["Question_Data"].ToString();
                }
                else if (QID1.Text ==("2"))
                {
                    Question2.Text = myReader2["Question_Data"].ToString();
                }
                else if (QID1.Text == ("3"))
                {
                    Question3.Text = myReader2["Question_Data"].ToString();
                }
                else if (QID1.Text == ("4"))
                {
                    Question4.Text = myReader2["Question_Data"].ToString();
                }
                else if (QID1.Text == ("5"))
                {
                    Question5.Text = myReader2["Question_Data"].ToString();
                }
            }
     }
}

private void GetDataFromSession()
{
    Label2.Text = Session["SNL"].ToString();
    Label4.Text = Session["SNB"].ToString();
    Label6.Text = Session["EMPID"].ToString();
    Label8.Text = Session["DNAME"].ToString();
}

}

Upvotes: 2

Views: 1962

Answers (3)

A.Bahrami
A.Bahrami

Reputation: 162

Change this line.

string depart = "select D_ID from Department where D_Name= " + Label8.Text + "";

to

string depart = "select D_ID from Department where D_Name like '" + Label8.Text + "'";

or faster search

string depart = "select D_ID from Department where D_Name= '" + Label8.Text + "'";

or for search similar string change to

string depart = "select D_ID from Department where D_Name like '%" + Label8.Text + "%'";

Upvotes: 0

Rolthar
Rolthar

Reputation: 161

As simple as missing the quotations of your sql.

sql-> "where D_Name = 'somevalue'

... So the fix for your code would be

string depart = "select D_ID from Department where D_Name= '" + Label8.Text + "'";

Upvotes: 0

vivek
vivek

Reputation: 1605

Change this line.

string depart = "select D_ID from Department where D_Name= " + Label8.Text + "";

to this line

string depart = "select D_ID from Department where D_Name= '" + Label8.Text + "'";

See the single quotes in the second line. Your string value is not in single quotes and this is the reason.

EDIT: Your code is open for SQL Injection Attack. You should use the SqlParameter instead of concatenating the query.

For More reading you can use this link: http://www.w3schools.com/sql/sql_injection.asp

Upvotes: 1

Related Questions