我正在创建一个Windows窗体,目前正在创建“创建成员”窗体。
现在我希望向用户显示新成员ID的输入数据。所以我想尝试在文本框中显示新的行ID。因此,如果我们采用下面的示例,当表单加载时,新成员ID应显示在文本框中
我尝试在下面尝试,但很难从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
答案 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();