2012-05-02 31 views
0

如何插入到表(用戶定義的類型)從存儲過程並傳遞到c#如何插入到從存儲過程表(用戶定義的類型)並傳遞到c#

表結構:

CREATE TABLE [dbo].[RegisterChoiceUserInitial](
    [RegisterChoiceUserInitialID] [int] IDENTITY(1,1) NOT NULL, 
    [UserId] [uniqueidentifier] NOT NULL, 
    [RegisterChoiceUserInitialJob] [nvarchar](50) NULL, 
    [RegisterChoiceUserInitialOrganization] [nvarchar](50) NULL, 
    [RegisterChoiceUserInitialUnit] [nvarchar](50) NULL, 
    [RegisterChoiceUserInitialMembershipType] [nvarchar](50) NULL, 
    [RegisterChoiceUserInitialStart] [nvarchar](10) NULL, 
    [RegisterChoiceUserInitialEnd] [nvarchar](10) NULL, 
CONSTRAINT [PK_RegisterChoiceUserInitial] PRIMARY KEY CLUSTERED 
(
    [RegisterChoiceUserInitialID] ASC 
) 

用戶定義的類型:

CREATE TYPE [dbo].[TableTypeInitial] AS TABLE(
    [ID] [int] NULL, 
    [InitialJob] [nvarchar](50) NULL, 
    [InitialOrganization] [nvarchar](50) NULL, 
    [InitialUnit] [nvarchar](50) NULL, 
    [InitialMembershipType] [nvarchar](50) NULL, 
    [InitialMembershipStart] [nvarchar](10) NULL, 
    [InitialMembershipEnd] [nvarchar](10) NULL 
) 

回答

0

您應該爲您的類型進行序列化/反序列化,並將序列化對象的字符串寫入SQL,然後當您需要獲取它時,從表中讀取字符串並將其反序列化爲您的類型。

編輯

約連載,你可以在這裏閱讀csharp-tutorial-serialize-objects-to-a-file他們使用序列化到文件,但它轉換成字符串不會很難

0

沒有辦法返回一個數據表作爲輸出參數。將表結果從xp返回給c#的唯一方法是使用xml參數或以下方式。

SQL腳本:

create procedure sp_returnTable 
    body of procedure 
    **select * from RegisterChoiceUserInitial** 
end 

樣品C#代碼:

string connString = "<your connection string>"; 
    string sql = "name of your sp"; 

SqlConnection conn = new SqlConnection(connString); 

try { 
    SqlDataAdapter da = new SqlDataAdapter(); 
    da.SelectCommand = new SqlCommand(sql, conn); 
    da.SelectCommand.CommandType = CommandType.StoredProcedure; 

    DataSet ds = new DataSet(); 
    da.Fill(ds, "result_name"); 

    DataTable dt = ds.Tables["result_name"]; 

    foreach (DataRow row in dt.Rows) { 
       //manipulate your data 
    } 

} catch(Exception e) { 
    Console.WriteLine("Error: " + e); 
} finally { 
    conn.Close(); 
} 
相關問題