[英]C# with sql query result to variable
我是C#的新手,所以也许我没有正确写过它。
在我的C#
表格中,我下了order nr.
成一种形式。 然后在sql
检查它。
需要执行以下查询:
获取OrderID
从Order nr.
需要检查Order ID
是否在[System_Opened_Orders]
=已打开订单
如果订单已打开,则需要在C# Messagebox.Show("Order opened, try again later")
运行Messagebox.Show("Order opened, try again later")
order
加载数据 SQL查询:
Declare @OrderID uniqueidentifier
SET @OrderID = (SELECT m.ID FROM [Agenda].[dbo].[orders] m
WHERE m.OrderNumber= @sqlordernr)
if EXISTS (SELECT 1 FROM [Agenda].[dbo].[System_Opened_Orders]
WHERE Record_ID=@OrderID )
BEGIN
// Tell its opened, need try again later
END
ELSE
BEGIN
// Order is not openend, can get custommer data
select ID, OrderNumber, CustommerName, CustommerCity
FROM [Agenda].[dbo].[orders] where OrderNumber = @sqlordernr
END
C#代码:
SqlConnection conn = new SqlConnection("Data Source=localhost;Initial Catalog=Agenda;Persist Security Info=True;User ID=sa;Password=xxxxxxxx"); conn.Open(); SqlCommand command = new SqlCommand(/*sql query*/, conn); command.Parameters.AddWithValue("@sqlordernr", odernr); using (SqlDataReader reader = command.ExecuteReader()) { if (reader.Read()) { // if order is opened then Messagebox.Show // if is not opened // String OrderCustommerName = reader.GetString(3).TrimEnd(); // String OrderCustommerCity= reader.GetString(4).TrimEnd(); // lbOrderData.Text = OrderCustommerName + " " + OrderCustommerCity; } } conn.Close();
如果“订单已打开”,则无需选择任何内容
IF EXISTS (SELECT 1 FROM [Agenda].[dbo].[System_Opened_Orders] WHERE Record_ID=@OrderID )
BEGIN
-- Order is not openend, get custommer data
select ID, OrderNumber, CustommerName, CustommerCity
FROM [Agenda].[dbo].[orders] where OrderNumber = @sqlordernr
END
然后在代码端; 如果datareader中没有行,则while.Read()将返回false
using (SqlDataReader reader = command.ExecuteReader())
{
while(reader.Read())
{
// String OrderCustommerName = reader.GetString(3).TrimEnd();
// String OrderCustommerCity= reader.GetString(4).TrimEnd();
// lbOrderData.Text = OrderCustommerName + " " + OrderCustommerCity;
}
}
您需要从存储过程中的if语句返回一些内容。 您可以简单地返回一个值
if EXISTS (SELECT 1 FROM [Agenda].[dbo].[System_Opened_Orders]
WHERE Record_ID=@OrderID )
BEGIN
select 1
END
ELSE
BEGIN
-- Order is not openend, get custommer data
select ID, OrderNumber, CustommerName, CustommerCity
FROM [Agenda].[dbo].[orders] where OrderNumber = @sqlordernr
END
现在,您可以通过查看DataReader的FieldCount属性来判断两个结果之间的差异
using (SqlDataReader reader = command.ExecuteReader())
{
if (reader.FieldCount == 1)
MessageBox.Show("Order open");
else
{
while(reader.Read())
{
// String OrderCustommerName = reader.GetString(3).TrimEnd();
// String OrderCustommerCity= reader.GetString(4).TrimEnd();
// lbOrderData.Text = OrderCustommerName + " " + OrderCustommerCity;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.