#c# #sql-server
#c# #sql-сервер
Вопрос:
Я хочу получить последний вставленный идентификатор в user_table, но когда я пытаюсь это сделать в коде в Visual Studio, он говорит, что он ничего не получает от запроса.
Я попробовал этот код в своей веб-форме в Visual Studio 2017. но он не может получить нужные мне данные. Когда я попробовал этот код в SQL Server 2014, он показывает нужные мне данные.
//This is the code in visual studio
string tklastid = "SELECT TOP 1 id_user FROM user_table ORDER BY id_user DESC".ToString();
SqlCommand lastid = new SqlCommand(tklastid, con);
SqlDataReader dr2;
dr2 = lastid.ExecuteReader();
try
{
while (dr2.Read())
{
Label1.Text = dr2.ToString();
userlast = dr2.ToString();
}
}
catch (Exception exe)
{
Label1.Text = exe.Message;
}
dr2.Close();
con.Close();
//this is the code when I make the table
create table user_table
(
int identity(1,1) primary key,
user_email varchar(50) not null,
user_name varchar(50)
)
Комментарии:
1. Вы имеете в виду, что он не работает в окне проводника сервера в Visual Studio?
2. Должно быть, отображается какое-то сообщение об ошибке в exception, пожалуйста, укажите это тоже.
3. Ваш первый
ToString()
заставил меня плакать
Ответ №1:
В вашем SQL для создания таблицы отсутствует имя первичного ключа «id-user», которое должно выглядеть следующим образом:
create table user_table
(
id_user int identity(1,1) primary key,
user_email varchar(50) not null,
user_name varchar(50)
)
Кроме того, как указал @hassan.ef, dr2
требуется индекс, даже если вы выбираете только один столбец, поэтому вы можете использовать либо dr2[0].ToString()
, либо dr2["id_user"].ToString()
.
Ответ №2:
используйте этот:
Label1.Text = dr2["id_user"].ToString();
userlast = dr2["id_user"].ToString();
вместо:
Label1.Text= dr2.ToString();
userlast = dr2.ToString();