Я хочу распечатать значение, которое возвращено SQL Server.
If NOT Exists(SELECT * FROM ItemList WHERE ItemName='txtItemNama')
BEGIN
INSERT INTO ItemList (ItemName) VALUES('txtItemNamea')
END
ELSE
BEGIN
Print 'Duplicate'
END
Этот запрос или возвратит меня или количество затронутых строк или Дубликат
Я хочу использовать этот Дубликат в C# в MessageBox.Show()
string query1 = "If NOT Exists(SELECT * FROM ItemList WHERE ItemName='txtItemName') BEGIN INSERT INTO ItemList (ItemName) VALUES('txtItemName') END ELSE BEGIN Print 'Duplicate' END";
SqlCommand cmd = new SqlCommand(query1, conn);
SqlDataReader dr;
conn.Open();
dr=cmd.ExecuteReader();
conn.Close();
MessageBox.Show(dr);
Я не знаю, как использовать dr
сделать это. Выручите меня для печати Дубликата здесь
MessageBox. Покажите (доктор);
Что я должен сделать здесь?
С помощью ADO.NET есть четыре варианта возврата информации из SQL-запроса:
Это все методы, вызываемые из командного объекта.
Существует множество различных способов обдирания кошки, можно использовать выходные параметры, можно использовать ExecuteScalar, можно использовать возвращаемые значения или использовать фиктивные наборы записей.
Чтобы получить возвращаемое значение из запроса, вы должны иметь возможность что-то вроде следующего на вашем C#
// add a new parameter, with any name we want - its for our own use only
SqlParameter sqlParam = com.Parameters.Add("@ReturnValue", SqlDbType.Int);
// set the direction flag so that it will be filled with the return value
myParm.Direction = ParameterDirection.ReturnValue;
Код выше захватывает возвращаемое значение, которое вы можете установить как вам нужно, возможно с 0 для существующего и 1 для несуществующего.
If NOT Exists(SELECT * FROM ItemList WHERE ItemName='txtItemNama')
BEGIN
INSERT INTO ItemList (ItemName) VALUES('txtItemNamea')
Return 0;
END
ELSE
BEGIN
Return 1;
END
Однако, есть небольшая оговорка с вышеприведенным советом - обычно я использую ORM, такой как Linq-to-SQL или NHibernate, или я использую Stored Procedures. Я нахожу встроенный SQL довольно громоздким. Так что, хотя мой ответ должен быть в общем-то звуковым, вам, наверное, придется проработать некоторые детали, чтобы он работал именно так, как вам нужно
.