2015-04-21 6 views
0

Я создаю форму окна и в настоящее время в процессе создания формы «создать элемент».как заполнить текстовое поле новым идентификатором строки в форме окна

Теперь я хочу показать пользователю, вводящему данные о том, каким будет новый идентификатор участников. Поэтому я думал о попытке показать новый идентификатор строки в текстовом поле. Так что, если мы возьмем пример ниже, когда форма загружается, новый член ID должен быть показан в текстовом поле enter image description here

Я попытался попытаться сделать это ниже, но испытывают трудности в получении результата от SQLCommand. Или, может быть, им не удалось сделать это?

Может ли кто-нибудь увидеть, как я могу применить идентификатор при загрузке?

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

Я немного смущен о вашем рабочем процессе. Итак: пользователь создает новый член -> затем вы хотите показать им, что идентификатор нового члена ->, чтобы вы перезагрузили форму и попытались получить последний вставленный идентификатор? – Jedediah

+0

@Jedediah обновил вопрос, чтобы показать, что им пытается достичь – Matchbox2093

ответ

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

perfect @ agent5566! также, когда вы упоминаете GUID и AutoInc, чтобы сказать вам правду, мы делаем групповой проект в школе, и я остался с беспорядком в базе данных и только до пятницы, чтобы завершить его, поскольку никто не собирается беспокоить ха-ха так, чтобы объясняет беспорядок, я буду в будущем занимать больше времени в дизайне для моей собственной работы – Matchbox2093

0

удалить AutoInc столбец ID и добавить Guid седловины ID вместо. то вы можете сгенерировать Id на клиенте с помощью Guid.NewGuid(). ToString()

0

Предполагая, что ваш идентификационный столбец генерируется базой данных (автоинкремент и т. д.), просто получите идентификатор, когда вы создаете запись.

var cmd = new SqlCommand("INSERT INTO User(FirstName) VALUES('bob')"); 
var id = (int) cmd.ExecuteScalar(); 
txtMemberId.Text = id.ToString(); 
Смежные вопросы