商店ID在数据库中

时间:2013-10-10 14:26:58

标签: c# sql

我这里有一个小问题,我有以下主表

M_employee

EMPID    Name

1      abc
2      xyz

M_Division

DIVID  EMPID  DIVISON

1        2      arts
2        1      science

M_Designation

DESGID  EMPID  Designation

1         2      Teacher
2         1      Scientist

并且基于主表中的ID,我在表单中的标签上检索了几个字段....我想要做的是当我将表单的这些值存储在新表中时我只想要id要存储而不是在表单标签中显示的文本值。下面是我试过的代码。任何人都可以帮助我吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Data.OleDb;
using System.Configuration;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
namespace Travel1.Forms
{
    public partial class temporaryduty : System.Web.UI.Page
    {
        SqlConnection conn = new SqlConnection("Server; Database; Integrated security = true");
        protected void Page_Load(object sender, EventArgs e)
        {
            Lbltoday.Text = DateTime.Now.ToString();
            if (!IsPostBack)
            {
                GetName();//adding the group to the dropdownbox
            }
        }

        private void GetName()
        {
             SqlCommand cmd = new SqlCommand("Select EMPID,Name FROM M_employee where IsActive=1 ORDER BY Name", conn);
             DataSet objDs = new DataSet();
             SqlDataAdapter sd = new SqlDataAdapter(cmd);
             conn.Open();
             sd.Fill(objDs);
             conn.Close();
             if (objDs.Tables[0].Rows.Count > 0)
             {
                 ddlname.DataSource = objDs.Tables[0];
                 ddlname.DataTextField = "Name";
                 ddlname.DataValueField = "EMPID";
                 ddlname.DataBind();
                 ddlname.Items.Insert(0, "--Select--");
             }
         }

         protected void ddlname_SelectedIndexChanged(object sender, EventArgs e)
         {
             GetDivision(ddlname.SelectedItem.Value);
         }

         private void GetDivision(string Name)
         {
             SqlCommand cmd = new SqlCommand("SELECT M_employee.Name, M_Division.DIVISION, M_Division.DIVID AS Expr1, M_Designation.DesigID AS Expr2, M_Designation.Designation FROM M_employee INNER JOIN M_Division ON M_employee.DIVID = M_Division.DIVID INNER JOIN M_Designation ON M_employee.DesigID = M_Designation.DesigID WHERE M_employee.EMPID=@EMPID ", conn);
             cmd.Parameters.AddWithValue("@EMPID", Name);
             DataSet objDs = new DataSet();
             SqlDataAdapter sd = new SqlDataAdapter(cmd);
             conn.Open();
             sd.Fill(objDs);
             conn.Close();
             if (objDs.Tables[0].Rows.Count > 0)
             {
                 lbldiv.Text = objDs.Tables[0].Rows[0]["DIVISION"].ToString();
                 lbldesig.Text = objDs.Tables[0].Rows[0]["Designation"].ToString();
             }
        }

        protected void btnSubmit_Click2(object sender, EventArgs e)
        {
            string RelaseDate = Calendar1.SelectedDate.Date.ToString();
            SqlCommand cmd = new SqlCommand("Insert into T_TADA_tempform(EMPID,DIVID,DesigID) values(@EMPID,@DIVID,@DesigID)", conn);
            cmd.Parameters.AddWithValue("@EMPID", ddlname.SelectedValue);
            cmd.Parameters.AddWithValue("@DIVID", lbldesig.Text);
            cmd.Parameters.AddWithValue("@DesigID", lbldiv.Text);
            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();
                int cnt = cmd.ExecuteNonQuery();
                conn.Close();
                if (cnt == 1)
                {
                    Response.Redirect("form.aspx");
                }
                else
                    Response.Write("Form has not been submitted,Please Try again!");
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

根据要求,以下是using资源使用IDisposable的惯用方法。注意,我没有对代码的逻辑做任何其他事情但是,所以要注意其他答案:)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Data.OleDb;
using System.Configuration;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
namespace Travel1.Forms
{
    public partial class temporaryduty : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Lbltoday.Text = DateTime.Now.ToString();
            if (!IsPostBack)
            {
                GetName();//adding the group to the dropdownbox
            }
        }
     private void GetName()
     {
         using (SqlConnection conn = new SqlConnection("Server; Database; Integrated security = true"))
         using (SqlCommand cmd = new SqlCommand("Select EMPID,Name FROM M_employee where IsActive=1 ORDER BY Name", conn))
         using (DataSet objDs = new DataSet())
         using (SqlDataAdapter sd = new SqlDataAdapter(cmd))
         {
             conn.Open();
             sd.Fill(objDs);
             if (objDs.Tables[0].Rows.Count > 0)
             {
                ddlname.DataSource = objDs.Tables[0];
                ddlname.DataTextField = "Name";
                ddlname.DataValueField = "EMPID";
                ddlname.DataBind();
                ddlname.Items.Insert(0, "--Select--");
             }
         }
     }
     protected void ddlname_SelectedIndexChanged(object sender, EventArgs e)
     {
         GetDivision(ddlname.SelectedItem.Value);
     }
     private void GetDivision(string Name)
     {
         using (SqlConnection conn = new SqlConnection("Server; Database; Integrated security = true"))
         using (SqlCommand cmd = new SqlCommand("SELECT M_employee.Name, M_Division.DIVISION, M_Division.DIVID AS Expr1, M_Designation.DesigID AS Expr2, M_Designation.Designation FROM M_employee INNER JOIN M_Division ON M_employee.DIVID = M_Division.DIVID INNER JOIN M_Designation ON M_employee.DesigID = M_Designation.DesigID WHERE M_employee.EMPID=@EMPID ", conn))
         using (DataSet objDs = new DataSet())
         using (SqlDataAdapter sd = new SqlDataAdapter(cmd))
         {
             cmd.Parameters.AddWithValue("@EMPID", Name);
             conn.Open();
             sd.Fill(objDs);
             if (objDs.Tables[0].Rows.Count > 0)
             {
                 lbldiv.Text = objDs.Tables[0].Rows[0]["DIVISION"].ToString();
                 lbldesig.Text = objDs.Tables[0].Rows[0]["Designation"].ToString();
             }
         }
     }
    protected void btnSubmit_Click2(object sender, EventArgs e)
    {
        string RelaseDate = Calendar1.SelectedDate.Date.ToString();
        int cnt;
        using (SqlConnection conn = new SqlConnection("Server; Database; Integrated security = true"))
        using (SqlCommand cmd = new SqlCommand("Insert into T_TADA_tempform(EMPID,DIVID,DesigID) values(@EMPID,@DIVID,@DesigID)", conn))
        {
            cmd.Parameters.AddWithValue("@EMPID", ddlname.SelectedValue);
            cmd.Parameters.AddWithValue("@DIVID", lbldesig.Text);
            cmd.Parameters.AddWithValue("@DesigID", lbldiv.Text);
            conn.Open();
            cnt = cmd.ExecuteNonQuery();
        }
        if (cnt == 1)
            {
                Response.Redirect("form.aspx");
            }
            else
                Response.Write("Form has not been submitted,Please Try again!");
        }
    }
    }

答案 1 :(得分:0)

当你读到你的部门和指定时,将ids存储在某个地方,就像在这个班级的私人档案中一样:

public partial class temporaryduty : System.Web.UI.Page
{
  private int divisionId;
  private int designationId;

...

if (objDs.Tables[0].Rows.Count > 0)
{
  lbldiv.Text = objDs.Tables[0].Rows[0]["DIVISION"].ToString();
  lbldesig.Text = objDs.Tables[0].Rows[0]["Designation"].ToString();
  divisionId = objDs.Tables[0].Rows[0]["Expr1"];
  designationId = objDs.Tables[0].Rows[0]["Expr2"];
}

然后,在您的按钮上单击使用这些字段插入ID:

 cmd.Parameters.AddWithValue("@DIVID", divisionId);
 cmd.Parameters.AddWithValue("@DesigID", designationId);