我有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();
答案 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();
}
}