Quantcast
Channel: Windows Forms Data Controls and Databinding forum
Viewing all articles
Browse latest Browse all 2535

how to pass value of variable from datareader execution of one form to another form which inserts that value to a table in sql server 2008 from c# windows forms

$
0
0

Hi my name is vishal for past 7-10 days  i have been thinking/breaking my head on how to pass value of variable from datareader execution of one form to another form which inserts that value to a table in sql server 2008 in c# windows forms?

So i am developing an application named:Mini Project,which has a login form named:frmLogin,which also has a mdi parent form named:MDIParent1.Mdi parent form(MDIParent1) also has child forms.

Given below is my c# code of login form(frmLogin):

namespace Mini_Project
{
    public partial class frmLogin : Form
    {
        public int mid;
        public int uid = 0;
        public frmLogin()
        {
            InitializeComponent();
        }
private void frmLogin_Load(object sender, EventArgs e)
        {    
        }
private bool ManagerUser(string username, string password)
        {
           bool success = false;
            SqlConnection conn = new SqlConnection("Data Source=NPD-4\\SQLEXPRESS;Initial Catalog=Task;Integrated Security=true");
            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
            }
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;
            cmd = new SqlCommand("Select manager_id,manager_first_name from [dbo].[ManagerDetail2] where username='"+txtUsername.Text+"' and password='"+txtPassword.Text+"' and LoginAttempts< 3", conn);
            SqlDataReader rd = cmd.ExecuteReader();
           while(rd.Read())
            {
                success=true;
                Module.Instance.Manager = Convert.ToInt32(rd[0].ToString());
                Module.Instance.GlobalManager = rd[1].ToString();
}
 rd.Close();
            conn.Close();
            return success;
        }
private bool ValidateUser(string username, string password)
        {
            bool success = false;
            SqlConnection conn = new SqlConnection("Data Source=NPD-4\\SQLEXPRESS;Initial Catalog=Task;Integrated Security=true");
            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
            }
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;
            cmd = new SqlCommand("Select * from [dbo].[UserDetail2] where username='"+txtUsername.Text+"' and password='"+txtPassword.Text+"' and LoginAttempts< 3", conn);
            SqlDataReader rd = cmd.ExecuteReader();
           while(rd.Read())
            {
                success=true;
                Module.Instance.User = Convert.ToInt32(rd[0].ToString());
                Module.Instance.GlobalUser = rd[1].ToString();
            }
            rd.Close();
            conn.Close();
            return success;
        }
private void btnLogin_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection("Data Source=NPD-4\\SQLEXPRESS;Initial Catalog=Task;Integrated Security=true");
            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
            }
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;
            if ((txtPassword.Text == "password") && (txtUsername.Text.ToLower() == "admin"))
            {
                Module.Instance.Admin = 1;
                MDIParent1 h = new MDIParent1();
                h.Show();
                this.Close();
            }
            else
            {
                string username = txtUsername.Text;
                string password = txtPassword.Text;
                bool validUser = ValidateUser(username, password);
                bool validmanager = ManagerUser(username, password);
                if (validUser)
                {
                    uid = 0;
                    string name = ("Select user_first_name,user_last_name,user_id from [dbo].[UserDetail2] where username='" + txtUsername.Text + "'");
                    cmd = new SqlCommand(name);
                    cmd.Connection = conn;
                    cmd.CommandType = CommandType.Text;
                    SqlDataReader dr = cmd.ExecuteReader();
                    while (dr.Read())
                    {
                        name = dr[0].ToString() + " " + dr[1].ToString()+System.Environment.NewLine+dr[2].ToString();
                        uid = Convert.ToInt32(dr[2].ToString());
                    }
                    dr.Close();
                    cmd = new SqlCommand("Update [dbo].[UserDetail2] set LoginAttempts=0 where username='" + txtUsername.Text + "'", conn);
                    cmd.ExecuteNonQuery();
                    frmUser u = new frmUser();
                    Module.Instance.User =u.autoGenId;
                    MDIParent1 m = new MDIParent1();
                    m.Show();
                    this.Close();
                }
                     if (validmanager)
                    {
                        string manager = ("Select manager_first_name,manager_last_name,manager_id from [dbo].[ManagerDetail2] where username='" + txtUsername.Text + "'");
                        cmd = new SqlCommand(manager);
                        cmd.Connection = conn;
                        cmd.CommandType = CommandType.Text;
                        SqlDataReader fr = cmd.ExecuteReader();
                        while (fr.Read())
                        {
                            manager = fr[0].ToString() + " " + fr[1].ToString()+System.Environment.NewLine+fr[2].ToString();
                             mid = Convert.ToInt32(fr[2].ToString());
                        }
                        fr.Close();
                        cmd = new SqlCommand("Update [dbo].[ManagerDetail2] set LoginAttempts=0 where username='" + txtUsername.Text + "'", conn);
                        cmd.ExecuteNonQuery();
                         frmManager y=new frmManager();
                        Module.Instance.Manager =y.bGenId;
                        MDIParent1 g = new MDIParent1();
                        g.Show();
                        this.Close();
                    }    
                    else
                    {
                        cmd = new SqlCommand("Update [dbo].[UserDetail2] set LoginAttempts=LoginAttempts+1 where username='" + txtUsername.Text + "'", conn);
                    cmd.ExecuteNonQuery();
                    cmd = new SqlCommand("Update [dbo].[ManagerDetail2] set LoginAttempts=LoginAttempts+1 where username='" + txtUsername.Text + "'", conn);
                    cmd.ExecuteNonQuery();
                        MessageBox.Show("Invalid user name or password. Please try tomorow ", "Task", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        txtUsername.Focus();
                    }
                }
            }
private void btnCancel_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

The above code works fine! As you can see i login/enter into application(Mini Project) as aadmin using default username:admin and default password:password.

Given below is c# code of class named:Module:

namespace Mini_Project
{
    public sealed class Module
    {
        private static readonly Module _instance = new Module();

        public static Module Instance
        {
            get { return _instance; }
        }
        public int Admin { get; set; }
        public int User { get; set; }
        public int Manager { get; set; }
        public string GlobalUser { get; set; }
        public string GlobalManager { get; set; }
        public string GlobalAdmin { get; set; }
    }
}


The above code works to some extent only!

So as a admin i create manager for tasks.Given below is c# code of form(frmManager) through which i create manager for tasks and also insert values into table:ManagerDetail2 in sql server 2008 through c# windows forms:

namespace Mini_Project
{
    public partial class frmManager : Form
    {
public int bGenId = -1;
        public frmManager()
        {
            InitializeComponent();
        }
 private void frmManager_Load(object sender, EventArgs e)
        {
            dtDOB.MaxDate = dtDOB.Value.AddYears(-30);
        }
private void btnCreate_Click(object sender, EventArgs e)
        {
SqlConnection conn = new SqlConnection("Data Source=NPD-4\\SQLEXPRESS;Initial Catalog=Task;Integrated Security=true");
            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
            }
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;
            cmd = new SqlCommand("Insert into [dbo].[ManagerDetail2](manager_first_name,manager_last_name,manager_dob,manager_sex,email,username,password,status,created_by,LoginAttempts,row_upd_date)" + "Values(@manager_first_name,@manager_last_name,@manager_dob,@manager_sex,@email,@username,@password,@status,@created_by,@LoginAttempts,GetDate()); Select @autoGenId=SCOPE_IDENTITY();", conn);
            cmd.Parameters.AddWithValue("@manager_first_name", txtFName.Text);
            cmd.Parameters.AddWithValue("@manager_last_name", txtLName.Text);
            cmd.Parameters.AddWithValue("@manager_dob", dtDOB.Value);
            if (cboSex.SelectedIndex == 0)
            {
                cmd.Parameters.AddWithValue("@manager_sex", "Male");
            }
            else if (cboSex.SelectedIndex == 1)
            {
                cmd.Parameters.AddWithValue("@manager_sex", "Female");
            }
            else if (cboSex.SelectedIndex == 2)
            {
                cmd.Parameters.AddWithValue("@manager_sex", "Transgender");
            }
            cmd.Parameters.AddWithValue("@email", txtEmailID.Text);
            cmd.Parameters.AddWithValue("@username", txtUsername.Text);
            cmd.Parameters.AddWithValue("@password", txtPassword.Text);
            cmd.Parameters.AddWithValue("@status", 1);
            cmd.Parameters.AddWithValue("@Created_by", 1);
            cmd.Parameters.AddWithValue("@LoginAttempts", 0);
            cmd.Parameters.Add("@autoGenId", SqlDbType.Int).Direction = ParameterDirection.Output;
            cmd.ExecuteNonQuery();
            bGenId = Convert.ToInt32(cmd.Parameters["@autoGenId"].Value);
            cmd = new SqlCommand("Update [dbo].[ManagerDetail2] set LoginAttempts=0 where username='" + txtUsername.Text + "'", conn);
            cmd.ExecuteNonQuery();
((MDIParent1)this.MdiParent).updateUserActivities(bGenId, 2, txtFName.Text.ToString() + "Manager detail was added successfully");
            MessageBox.Show("Manager Detail was added successfully", "Task", MessageBoxButtons.OK, MessageBoxIcon.Information);
            conn.Close();
            this.Close();
        }

The above code works fine with no problems at all!

Given below is structure of table:ManagerDetail2 in sql server 2008:

ColumnName                                                   DataType                AllowNulls

manager_id(auto-increment primary key)            Int                              No

manager_first_name                                       nvarchar(50)                  Yes

manager_last_name                                       nvarchar(50)                  Yes

manager_dob                                                      date                          Yes

manager_sex                                                  nvarchar(20)                  Yes

email                                                               nvarchar(60)                  Yes

username                                                       nvarchar(25)                   Yes

password                                                       nvarchar(15)                   Yes

status                                                                  bit                              Yes

created_by                                                          Int                              Yes

LoginAttempts                                                     Int                              Yes

row_upd_date                                                 datetime                        Yes

 
So using username and password from table:ManagerDetail2 i enter/login into application asmanager(each manager has different manager_id as field:manager_id in table:ManagerDetail2 is auto-increment primary key),create/add new users to application who will come under me/that particular manager only!

Given below is c# code of login form(frmLogin) of how i get value ofmanager_id of currently logged in/entered manager of application:

namespace Mini_Project
{
    public partial class frmLogin : Form
    {
        public int mid;
public frmLogin()
        {
            InitializeComponent();
        }
private void frmLogin_Load(object sender, EventArgs e)
        {    
        }
private bool ManagerUser(string username, string password)
        {
           bool success = false;
            SqlConnection conn = new SqlConnection("Data Source=NPD-4\\SQLEXPRESS;Initial Catalog=Task;Integrated Security=true");
            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
            }
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;
            cmd = new SqlCommand("Select manager_id,manager_first_name from [dbo].[ManagerDetail2] where username='"+txtUsername.Text+"' and password='"+txtPassword.Text+"' and LoginAttempts< 3", conn);
            SqlDataReader rd = cmd.ExecuteReader();
           while(rd.Read())
            {
                success=true;
                Module.Instance.Manager = Convert.ToInt32(rd[0].ToString());
                Module.Instance.GlobalManager = rd[1].ToString();
}
rd.Close();
            conn.Close();
            return success;
        }
private void btnLogin_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection("Data Source=NPD-4\\SQLEXPRESS;Initial Catalog=Task;Integrated Security=true");
            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
            }
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;
            if ((txtPassword.Text == "password") && (txtUsername.Text.ToLower() == "admin"))
            {
                Module.Instance.Admin = 1;
                MDIParent1 h = new MDIParent1();
                h.Show();
                this.Close();
            }
            else
            {
                string username = txtUsername.Text;
                string password = txtPassword.Text;
                bool validmanager = ManagerUser(username, password);
if (validmanager)
                    {
                        string manager = ("Select manager_first_name,manager_last_name,manager_id from [dbo].[ManagerDetail2] where username='" + txtUsername.Text + "'");
                        cmd = new SqlCommand(manager);
                        cmd.Connection = conn;
                        cmd.CommandType = CommandType.Text;
                        SqlDataReader fr = cmd.ExecuteReader();
                        while (fr.Read())
                        {
                            manager = fr[0].ToString() + " " + fr[1].ToString()+System.Environment.NewLine+fr[2].ToString();
                             mid = Convert.ToInt32(fr[2].ToString());
                        }
                        fr.Close();
                        cmd = new SqlCommand("Update [dbo].[ManagerDetail2] set LoginAttempts=0 where username='" + txtUsername.Text + "'", conn);
                        cmd.ExecuteNonQuery();
 MDIParent1 g = new MDIParent1();
                        g.Show();
                        this.Close();
                    }    
                    else
                    {
 cmd = new SqlCommand("Update [dbo].[ManagerDetail2] set LoginAttempts=LoginAttempts+1 where username='" + txtUsername.Text + "'", conn);
                    cmd.ExecuteNonQuery();
                        MessageBox.Show("Invalid user name or password. Please try tomorow ", "Task", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        txtUsername.Focus();
                    }
                }

As you can see variable named:mid in login form(frmLogin) containsmanager_id of currently logged in manager/entered manager of application(Mini Project) using datareader(named:fr) execution of sqlcommand(named:cmd) in function(validmanager) of btnLogin of login form(frmLogin).

So using username and password from table:ManagerDetail2,i enter/login into application as amanager,create new users to application who will come under me/that particular manager only.Given below is c# code of form(frmUser) through which i create new users to application and also insert values into table:UserDetail2:

namespace Mini_Project
{
    public partial class frmUser : Form
    {
 public int autoGenId = -1;
        int man;
        public frmUser()
        {
            InitializeComponent();
            frmLogin j = new frmLogin();
            j.mid = man;
        }
 private void btnCreate_Click(object sender, EventArgs e)
        {
SqlConnection conn = new SqlConnection("Data Source=NPD-4\\SQLEXPRESS;Initial Catalog=Task;Integrated Security=true");
            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
            }
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;
            cmd = new SqlCommand("Insert into [dbo].[UserDetail2](user_first_name,user_last_name,user_dob,user_sex,email,username,password,status,row_upd_date,created_by,LoginAttempts)" + "Values(@user_first_name,@user_last_name,@user_dob,@user_sex,@email,@username,@password,@status,GetDate(),@created_by,@LoginAttempts); Select @autoGenId=SCOPE_IDENTITY();", conn);
            cmd.Parameters.AddWithValue("@user_first_name", txtFName.Text);
            cmd.Parameters.AddWithValue("@user_last_name", txtLName.Text);
            cmd.Parameters.AddWithValue("@user_dob", dtDOB.Value);
            if (cboSex.SelectedIndex == 0)
            {
                cmd.Parameters.AddWithValue("@user_sex", "Male");
            }
            else if (cboSex.SelectedIndex == 1)
            {
                cmd.Parameters.AddWithValue("@user_sex", "Female");
            }
            else if (cboSex.SelectedIndex == 2)
            {
                cmd.Parameters.AddWithValue("@user_sex", "Transgender");
            }
            cmd.Parameters.AddWithValue("@email", txtEmailID.Text);
            cmd.Parameters.AddWithValue("@username", txtUsername.Text);
            cmd.Parameters.AddWithValue("@password", txtPassword.Text);
            cmd.Parameters.AddWithValue("@status", 1);
            cmd.Parameters.AddWithValue("@created_by",man);
            cmd.Parameters.AddWithValue("@LoginAttempts", 0);
            cmd.Parameters.Add("@autoGenId", SqlDbType.Int).Direction = ParameterDirection.Output;
            cmd.ExecuteNonQuery();
            autoGenId = Convert.ToInt32(cmd.Parameters["@autoGenId"].Value);
 cmd = new SqlCommand("Update [dbo].[UserDetail2] set LoginAttempts=0 where username='" + txtUsername.Text + "'", conn);
            cmd.ExecuteNonQuery();
            ((MDIParent1)this.MdiParent).updateUserActivities(autoGenId, 1, txtFName.Text + "User detail was added successfully");
            MessageBox.Show("User Detail was added successfully", "Task", MessageBoxButtons.OK, MessageBoxIcon.Information);
            conn.Close();
            this.Close();
        }

The program executes well some extent only! The problem i am facing is every i execute the program,i am getting value as0 in field:created_by in table:UserDetail2 for all users,even though each user is created by different manager!

Given below is structure of table:UserDetail2 in sql server 2008:
ColumnName                                               DataType                      AllowNulls

user_id(auto-increment primary key)              Int                                 No

user_first_name                                          nvarchar(50)                     Yes

user_last_name                                          nvarchar(50)                     Yes

user_dob                                                        date                              Yes

user_sex                                                    nvarchar(20)                      Yes

email                                                          nvarchar(60)                      Yes

username                                                  nvarchar(25)                      Yes

password                                                  nvarchar(15)                      Yes

status                                                             bit                                 Yes

created_by                                                     Int                                 Yes

LoginAttempts                                                Int                                 Yes

row_upd_date                                            datetime                           Yes

What i want is value of variable mid(in login form(frmLogin) which contains value ofmanager_id of currently logged in manager of application(in datareader execution of sql command of functionvalidManager() in btnLogin of login form(frmLogin) to be passed to value of field:created_by in table:UserDetail2 upon creation of new user by that particular manager.

Given below is c# code of mdi parent form(MDIParent1):

namespace Mini_Project
{
    public partial class MDIParent1 : Form
    {
public MDIParent1()
        {
            InitializeComponent();
            if (Module.Instance.Admin == 1)
            {
                addNewTaskToolStripMenuItem.Enabled = true;
                addUserToolStripMenuItem1.Enabled = true;
                addManagerToolStripMenuItem.Enabled = true;
                addTaskToolStripMenuItem.Enabled = true;
                exitToolStripMenuItem.Enabled = true;
                checkInUserToolStripMenuItem.Enabled = false;
                tasksToolStripMenuItem.Enabled = true;
                optionsToolStripMenuItem.Enabled = true;
                pendingTaksToolStripMenuItem.Enabled = true;
                completedTasksToolStripMenuItem.Enabled = true;
            }
            frmManager m = new frmManager();
            if (Module.Instance.Manager==m.bGenId)
            {
                addUserToolStripMenuItem1.Enabled = false;
                addManagerToolStripMenuItem.Enabled = true;
                addNewTaskToolStripMenuItem.Enabled = false;
                addTaskToolStripMenuItem.Enabled = true;
                exitToolStripMenuItem.Enabled = true;
                checkInUserToolStripMenuItem.Enabled = false;
                tasksToolStripMenuItem.Enabled = true;
                optionsToolStripMenuItem.Enabled = true;
                pendingTaksToolStripMenuItem.Enabled = true;
                completedTasksToolStripMenuItem.Enabled = true;
            }
            frmUser t = new frmUser();
            if (Module.Instance.User == t.autoGenId)
            {
                addManagerToolStripMenuItem.Enabled = false;
                addUserToolStripMenuItem1.Enabled = false;
                addNewTaskToolStripMenuItem.Enabled = false;
                addTaskToolStripMenuItem.Enabled = false;
                exitToolStripMenuItem.Enabled = true;
                checkInUserToolStripMenuItem.Enabled = true;
                tasksToolStripMenuItem.Enabled = false;
                optionsToolStripMenuItem.Enabled = false;
                pendingTaksToolStripMenuItem.Enabled = false;
                completedTasksToolStripMenuItem.Enabled = false;
            }
        }
public SqlConnectionStringBuilder connBuilder;
        public SqlConnection conn;
        private void MDIParent1_Load(object sender, EventArgs e)
        {
            connBuilder = new SqlConnectionStringBuilder();
            connBuilder.InitialCatalog = "Task";
            connBuilder.DataSource = "NPD-4\\SQLEXPRESS";
            connBuilder.IntegratedSecurity = true;
            connBuilder.AsynchronousProcessing = true;
            conn = new SqlConnection(connBuilder.ToString());
            conn.Open();  
        }

So my question is am i going in right track in terms of getting manager_id of currently entered/logged in manager in application?If so tell me what modifications must i need to do in my c# code and where to achieve my required result?

Can anyone help me please! Can anyone help me/guide me to solve my problem! Any help/guidance in solving of this problem would be greatly appreciated!


vishal



Viewing all articles
Browse latest Browse all 2535

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>