我的 c# 应用程序真的很难。每次我运行下面的代码时,它都会给我一个关于将 nvarchar 数据类型转换为 int 的错误。我试过铸造,但它似乎不起作用。
ConnectionString myConnString = new ConnectionString();
string connString = myConnString.getConnectionString();
SqlConnection connValidate = new SqlConnection(connString);
SqlCommand cmdValidate = new SqlCommand("XXX", connValidate);
cmdValidate.CommandType = CommandType.StoredProcedure;
cmdValidate.Parameters.Add(new SqlParameter("@AccountID", currentUser));
cmdValidate.Parameters.Add(new SqlParameter("@PeriodMonth", Convert.ToString(comboBoxMonth.SelectedItem).Trim().ToUpper()));
cmdValidate.Parameters.Add(new SqlParameter("@PeriodYear", Convert.ToInt32(comboBoxYear.SelectedValue)));
connValidate.Open();
Int32 result = Convert.ToInt32(cmdValidate.ExecuteScalar());
connValidate.Dispose();
connValidate.Close();
这是我正在使用的存储过程:
ALTER PROCEDURE [dbo].[XXX]
@AccountID char(6),
@PeriodMonth char(10),
@PeriodYear int,
@Date int,
@PeriodID int,
@InventoryID int,
@ProductOutID int
AS
SELECT @PeriodID = PeriodID FROM Periods
WHERE PeriodMonth = @PeriodMonth AND PeriodYear = @PeriodYear AND AccountID = @AccountID
SELECT @InventoryID = InventoryID FROM Fact
WHERE PeriodID = @PeriodID AND AccountID = @AccountID
SELECT @ProductOutID = ProductOutID FROM Inventory
WHERE InventoryID = @InventoryID
SELECT DailyOutID FROM DailyOut
WHERE ProductOutID = @ProductOutID AND Date = @Date
RETURN
我在这里要做的是检查用户输入的同年同月的时间段是否已经存在于数据库中。所以基本上,如果输入的周期已经存在,存储过程应该返回一个值,如果存在,那么MessageBox
将向用户显示一个值,提醒用户存在相同的周期。非常感谢!:)