0

I am creating a c# windows form app, which will retrieve the data from a DB that is already created in sql server2008r2. There are 2 win forms in my app, 1st one is for getting the login details, the 2nd one is for display the data that are relevant to given UserID & Password. I can't get the data to my 2nd form. This is my code:

*******1st form****

 public partial class FormLog_in : Form
 {
    SqlConnection con = new SqlConnection("Data source=CHINTHAK-PC ; Initial Catalog=FlintecTest; Integrated Security = yes;");
    SqlDataAdapter da = new SqlDataAdapter();
    SqlCommand cmd = new SqlCommand();

    public FormLog_in()
    {
        InitializeComponent();
    }

    private void btnLogIn_Click(object sender, EventArgs e)
    {
        if (!(string.IsNullOrEmpty(txtUserName.Text)) && !(string.IsNullOrEmpty(txtPassword.Text)))
        {
            con.Open();
            string query = "SELECT count(*) FROM LogIn  WHERE UesrName=@1 AND PassWord=@2 ";
            cmd = new SqlCommand(query, con);
            cmd.Parameters.Add("@1", SqlDbType.NVarChar).Value = txtUserName.Text;
            cmd.Parameters.Add("@2", SqlDbType.NVarChar).Value = txtPassword.Text;
            int count = Convert.ToInt32(cmd.ExecuteScalar());
            con.Close();

            if (count > 0)
            {
                MessageBox.Show("Valid Username and Password");
                Welcome f1 = new Welcome();
                f1.Show();

            }
            else
                MessageBox.Show("Invalid Username or Password try again");
        }

*****2nd form**

public partial class Welcome : Form
{
    string query = null;

    SqlConnection con = new SqlConnection("Data source=CHINTHAK-PC ; Initial Catalog=FlintecTest; Integrated Security = yes;");
    SqlDataAdapter da = new SqlDataAdapter();
    BindingSource userTable = new BindingSource();
    DataSet ds = new DataSet();

    public Welcome()
    {
        InitializeComponent();

    }

    private void Welcome_Load(object sender, EventArgs e)
    {
        query = "SELECT * FROM  Users WHERE UserName=@x AND Users.Password=@y ";//x should be given username by current login
        da.SelectCommand = new SqlCommand(query, con);                          //y should be given password by current login
        ds.Clear();
        da.Fill(ds, "usr");
        userTable.DataSource = ds.Tables["usr"];

        txtFristName.DataBindings.Add(new Binding("Text", userTable, "FirstName"));
        txtLastName.DataBindings.Add(new Binding("Text", userTable, "LastName"));
        txtAddress.DataBindings.Add(new Binding("Text", userTable, "Address"));
        txtTelephone.DataBindings.Add(new Binding("Text", userTable, "Telephone"));
        txtEmail.DataBindings.Add(new Binding("Text", userTable, "Email"));
        txtFax.DataBindings.Add(new Binding("Text", userTable, "Fax"));
        txtSection.DataBindings.Add(new Binding("Text", userTable, "Section"));
        txtPosition.DataBindings.Add(new Binding("Text", userTable, "Position"));
    }
}
2
  • 1
    You are not adding parameters with command for the 2nd Form Commented May 15, 2013 at 11:16
  • @Mora - The query contained within Welcome_Loaddoes nothing because the parameter list is empty. Let alon the fact you are storing passwords in plain text, thats a horrible idea, no matter WHAT this is being used for. Passwords no matter what the account is used for should be stored in plain text. Commented May 15, 2013 at 11:28

3 Answers 3

1

Why not not change your constructor in your welcome form to receive parameters.

 public Welcome(String usr, String pword)
{
    InitializeComponent();
    this.Username=usr;
    this.Password=pword; // you should have a form of encryption for your password
}

So, when you call, you do:

Welcome f1 = new Welcome(txtUsername.Text,txtPassword.Text);

and then you add properties in welcome form like:

private String Username { get; set; }
private String Password { get; set; }

then add the 2 parameters in welcome form load:

cmd.Parameters.Add("@x", SqlDbType.NVarChar).Value = Username;
cmd.Parameters.Add("@y", SqlDbType.NVarChar).Value = Password;
Sign up to request clarification or add additional context in comments.

Comments

0

You could use constructors to solve your problem

When you hit the "login" button (supposing that there's one) you could:

private void login_Click(object sender, System.EventArgs e)
{
    Form2 frm=new Form2(userName.text,password.tex);
    frm.Show();
}

Your second form constructor could be:

public Form2(string user, string pass)
{
  InitializeComponent(); 
  //Save your parameters here so you can use them with the query
}

There are other ways to do this. http://www.codeproject.com/Articles/14122/Passing-Data-Between-Forms

Comments

0

Of course you cannot retrieve data from database in second form since you are not

1- you didn't send the x and y parameters to to the second Form

Form2 frm = new Form2(userName.text,password.tex);
frm.Show();

2- must pass x and y to the query in SqlCommand and execute the query

query = "SELECT * FROM  Users WHERE UserName='"+ x +"'AND Password='"+y+"'";

Final code

in Form one

if (count > 0)
{ 
    MessageBox.Show("Valid Username and Password");
    Welcome f1 = new Welcome( txtUserName.Text,txtPassword.Text);
    f1.Show();
}

in Form Two

string x, y;

public Welcome(String usr, String pword)
{
    InitializeComponent();
    x = usr; y = pword;
}

private void Welcome_Load(object sender, EventArgs e)
{
    query = "SELECT * FROM  Users WHERE UserName='"+ x +"'AND Password='"+y+"'";

    cmd.SelectCommand = new SqlCommand(query ,con);

    ds.Clear();
    cmd.Fill(ds);

    userTable.DataSource = ds.Tables[0];

    txtFristName.DataBindings.Add(new Binding("Text", userTable, "FirstName"));
    txtLastName.DataBindings.Add(new Binding("Text", userTable, "LastName"));
    txtAddress.DataBindings.Add(new Binding("Text", userTable, "Address"));
    txtTelephone.DataBindings.Add(new Binding("Text", userTable, "Telephone"));
    txtEmail.DataBindings.Add(new Binding("Text", userTable, "Email"));
    txtFax.DataBindings.Add(new Binding("Text", userTable, "Fax"));
    txtSection.DataBindings.Add(new Binding("Text", userTable, "Section"));
    txtPosition.DataBindings.Add(new Binding("Text", userTable, "Position"));
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.