从comobox添加引用名称而不是ID

时间:2019-06-27 16:59:00

标签: c# winforms combobox

我有2张桌子。第一个表具有列(categoryID),该列是第二个表中categoryID的外键。第二个表具有2列(categoryID,categoryName)。经过一些努力之后,我在组合框中显示了categoryName而不是categoryID。但是现在,当我想从已经创建的现有categoryName中选择(显示在组合框的下拉菜单中)时,是不可能的,因为我必须在其中键入int而不是字符串格式。我是编程的新手

con.Open();
        string cmddt = "insert into wallettbl(sum, date, categoryID, type)   
        values ('" + textBox1.Text + "','" + textBox2.Text + "','" + 
        comboBox1.Text + "', '" + type + "')";

        SqlCommand com = new SqlCommand(cmddt, con);
        com.ExecuteNonQuery();

如果要添加字符串(从组合框)而不是int,如何编写代码,但是在第一个表中将添加categoryID,它引用了categoryName。
编辑:为组合框添加了代码

 con.Open();
                string cmddt = "select categoryNAME from categoryTbl";
                SqlCommand com = new SqlCommand(cmddt, con);
                SqlDataAdapter da = new SqlDataAdapter(cmddt, con);
                DataSet ds = new DataSet();
                da.Fill(ds);
                com.ExecuteNonQuery();
                con.Close();

1 个答案:

答案 0 :(得分:0)

更改查询以加载以下类别:

string cmddt = "select categoryID, categoryNAME from categoryTbl";

如下所示设置comboBox1的数据源:

comboBox1.DataSource = dt;
comboBox1.DisplayMember = "categoryNAME";
comboBox1.ValueMember = "categoryID";

最后修改代码,如下所示将数据插入wallettbl:

string cmddt=
            @"INSERT INTO WALLETTBL(sum, date, categoryID, type)   
    VALUES (@Sum, @Date, @CategoryId, @Type);";

         using (SqlConnection conn = new SqlConnection(ConnectionString))
         {
            using (SqlCommand cmd = new SqlCommand(insertQuery, conn))
            {
               cmd.Parameters.Add("@Sum", SqlDbType.Int).Value = textBox1.Text;
               cmd.Parameters.Add("@Date", SqlDbType.DateTime).Value = textBox2.Text;
               cmd.Parameters.Add("@CategoryId", SqlDbType.Int).Value =  Convert.ToInt32(comboBox1.SelectedValue);
               cmd.Parameters.Add("@Type", SqlDbType.Varchar).Value = type;
               await conn.OpenAsync();
               await cmd.ExecuteNonQueryAsync();
            }
         }