![](/img/trans.png)
[英]c# System.InvalidCastException when passing datatable to stored procedure
[英]c# : passing dataTable to stored procedure: column order issue
我有一個存儲過程,它接受一個名為SeasonTable
的用戶定義表類型 ,如下所示:
季節表
[SeasonId] [int] NOT NULL,
[SeasonName] [varchar](50) NOT NULL,
[Month] [int] NULL,
[IsDeleted] [bit] NOT NULL
存儲過程如下圖所示
CREATE PROCEDURE [dbo].[udpTest]
(
@STable dbo.SeasonTable READONLY
)
AS
BEGIN
SELECT [SeasonName] as SeasonName,[SeasonId],[Month],[IsDeleted]
FROM @AdminBillingSeasonsTable
END
當我從C#應用程序調用時
private DataTable TestCreateDataTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("SeasonName", typeof(string));
dt.Columns.Add("SeasonId", typeof(int));
dt.Columns.Add("Month", typeof(int));
dt.Columns.Add("IsDeleted", typeof(bool));
dt.Rows.Add("season1",1, 4, false);
dt.Rows.Add("season2",2, 9, false);
dt.Rows.Add("season3",3, 11, false);
return dt;
}
當我將上表用作C#應用程序中SP的參數時,會引發錯誤:
無法將“ season1”轉換為int。
這是否意味着C#應用程序中的列順序應與SQL中的列順序相同?
對此,我們將給予任何幫助。
提前致謝
嘗試像這樣切換列順序
private DataTable TestCreateDataTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("SeasonId", typeof(int)); // seasonId and then
dt.Columns.Add("SeasonName", typeof(string)); // seasonName
dt.Columns.Add("Month", typeof(int));
dt.Columns.Add("IsDeleted", typeof(bool));
dt.Rows.Add("season1",1, 4, false);
dt.Rows.Add("season2",2, 9, false);
dt.Rows.Add("season3",3, 11, false);
return dt;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.