如何使用Windows窗体中的新行ID填充文本框

时间:2015-04-21 18:53:25

标签: c# sql winforms

我正在创建一个Windows窗体,目前正在创建“创建成员”窗体。

现在我希望向用户显示新成员ID的输入数据。所以我想尝试在文本框中显示新的行ID。因此,如果我们采用下面的示例,当表单加载时,新成员ID应显示在文本框中 enter image description here

我尝试在下面尝试,但很难从sqlCommand获取结果。或者我可能会以错误的方式做到这一点哈哈

任何人都可以看到我如何在加载时应用id?

    private void frmAddMember_Load(object sender, EventArgs e)
    {
        using (var connection = new SqlConnection(Properties.Settings.Default.BioEngineeringDB))
        {
            connection.Open();
            using (var cmd = new SqlCommand("SELECT * FROM Users WHERE UserID=(SELECT MAX(UserID) FROM Users", connection))
            {
                //cmd.Parameters.Add("@MYVALUE", SqlDbType.VarChar).Value = comboBox1.Text;
                SqlDataReader re = cmd.ExecuteReader();

                if (re.Read())
                {
                    txtMemberId.Text = // result from the SQLCommand but i dont know how to get it

3 个答案:

答案 0 :(得分:3)

您可以通过使用列名称对DataReader编制索引来访问当前行单元格,例如此txtMemberId.Text = thisReader["UserID"]; //here you should do increment。但老实说,以Id方式生成select max(id) + 1是奇怪的,GUIDs nad Autoinc integer在我们这个时代更常用。

您的MAX+1应如下:

private void frmAddMember_Load(object sender, EventArgs e)
    {
        using (var connection = new SqlConnection(Properties.Settings.Default.BioEngineeringDB))
        {
            connection.Open();
            using (var cmd = new SqlCommand("SELECT (COALESCE(MAX(UserID), 0) + 1) as UserID FROM Users", connection))
            {
                SqlDataReader re = cmd.ExecuteReader();

                if (re.Read())
                {
                    txtMemberId.Text = re["UserID"].ToString();

答案 1 :(得分:0)

删除你的autoinc id列并添加一个guid id col。然后你可以用Guid.NewGuid()。ToString()

在客户端上生成Id

答案 2 :(得分:0)

假设您的ID列是由数据库生成的(自动增量等等),只需在创建记录时获取ID。

var cmd = new SqlCommand("INSERT INTO User(FirstName) VALUES('bob')");
var id = (int) cmd.ExecuteScalar();
txtMemberId.Text = id.ToString();