2017-08-03 13 views
-1

DBからインターフェイスフィールドを生成する一般的なWebアプリケーションを作成しています。フィールドが動的なので、これらのフィールドから値を取得して渡すことができます。フィールドについては、以下に示すようにカンマ区切りの文字列としてDB、SQL Server 2008の複数のテーブルに動的データを追加する方法

'MemberID:M001,FirstName:Kasun,LastName:Harshana,CompanyName:cmp' 

それがフィールドIDとユーザインサート値を含む

例えば:MEMBERID = M001

しかし、私の問題は、動的なフィールドから値を取得し、複数のテーブル にそれらを挿入する方法である。例:MEMBERIDと姓はメンバー表とのFirstName、LastNameの挿入すべきである、と会社名は

これらのテーブルは異なり、Personテーブルに挿入する必要があります手順への入力文字列で、その文字列が複数のテーブルを持つことができ、それは私のビューの詳細について('MemberID:M001,FirstName:Kasun,LastName:Harshana,CompanyName:cmp') : 2 table

の分野に依存し、私はここで、これでサンプルテーブル構造を添付this is the table where I get fields this the table where contains field belong table detail

私はストアドを作成する必要があります :任意のアプローチはこれを達成するための 特定のテーブルにこれらを追加するために、SQL Serverの手順は暖かくイベントは、データ入力のために実行すると

おかげで

+1

、私はそれを動的に行いたいだけの静的テーブルに追加し、ここで私が作成した手順ですが、?あなたはあなた自身のコードを書いて、立ち往生したときに質問をするべきです。私はこの種のcsvファイルをストアドプロシージャに送信しないことをお勧めしますが、これをC#コードで処理してください。 – Peter

+0

Web APIまたはストアドプロシージャの作成に問題がありますか?このような汎用インターフェースをWeb API経由で使用することは、セキュリティ上の問題です。 –

答えて

0

、データベース上の2つのストアドプロシージャを呼び出す必要があり、歓迎されます としてprocのusp_MemberTable @pMemberID、 @pLastName を作成procのusp_PesronTableを作成membertable 値 (pLastName @ @ pMemberID、)

に挿入0 - パラメータは列として として として - パラメータを持つSQL文。

personテーブルの場合、メンバーIDを外部キーとして追加します。 c#のフォームのデータ入力オブジェクトからパラメータを渡すことができます。

0
ALTER proc [dbo].[usp_CreateMemberByString](@Input 
nvarchar(max),@KeyUser bigint,@KeySession int = 0 , @KeyClient bigint 
=0,@retVal INT OUTPUT,@retMsg varchar(500) output) 
AS 
    BEGIN 
    DECLARE @KeyMember bigint,@keyHousehold bigint,@MemberID 
    varchar(30),@FirstName varchar(50),@LastName varchar(50),@MiddleInitial 
    varchar(1),@NamePrefix varchar(20),@NameSuffix varchar(20) 
     ,@Title int,@CompanyName varchar(50),@Status bit,@EnrollDate 
    datetime,@IsMainMember bit,@HomePhone varchar(20),@MobilePhone 
    varchar(20),@WorkPhone varchar(20),@DateofBirth datetime 
     ,@Gender varchar(10),@EmailAddress varchar(100),@Notes 
    varchar(2000),@Source varchar(20) 
     ,@Address1 varchar(45),@Address2 varchar(45),@City 
    varchar(30),@StateProvince varchar(50),@CountryCode 
    varchar(10),@StreetNumber varchar(10),@PostalCode varchar(10) 
     ,@SendEmail bit,@SendMail bit,@SendText bit 
     ,@EnteredBy varchar(20) 
     ,@imgPath varchar(500) = '' 

DECLARE @StartIndex INT, @EndIndex INT,@Character char = ',' 
SET @StartIndex = 1 

IF SUBSTRING(@Input, LEN(@Input) - 1, LEN(@Input)) <> @Character 
BEGIN 
     SET @Input = @Input + @Character 
END 

WHILE CHARINDEX(@Character, @Input) > 0 
BEGIN 
     SET @EndIndex = CHARINDEX(@Character, @Input) 

     --Start sperate item name and vakue 
     DECLARE @SubStartIndex INT, @SubEndIndex INT,@SubCharacter char = ':',@SubInput NVARCHAR(250) 
     SET @SubStartIndex = 1 
     SET @SubInput = SUBSTRING(@Input, @StartIndex, @EndIndex - 1) 

     SET @SubEndIndex = CHARINDEX(@SubCharacter, @SubInput) 

     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'MemberID') 
     Begin 
     set @MemberID = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'FirstName') 
     Begin 
     set @FirstName = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'LastName') 
     Begin 
     set @LastName = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'MiddleInitial') 
     Begin 
     set @MiddleInitial = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'NamePrefix') 
     Begin 
     set @NamePrefix = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'NameSuffix') 
     Begin 
     set @NameSuffix = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'Title') 
     Begin 
     set @Title = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'CompanyName') 
     Begin 
     set @CompanyName = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'Status') 
     Begin 
     set @Status = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'EnrollDate') 
     Begin 
     set @EnrollDate = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'IsMainMember') 
     Begin 
     set @IsMainMember = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'HomePhone') 
     Begin 
     set @HomePhone = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'MobilePhone') 
     Begin 
     set @MobilePhone = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'WorkPhone') 
     Begin 
     set @WorkPhone = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'DateofBirth') 
     Begin 
     set @DateofBirth = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'Gender') 
     Begin 
     set @Gender = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'EmailAddress') 
     Begin 
     set @EmailAddress = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'Notes') 
     Begin 
     set @Notes = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'Source') 
     Begin 
     set @Source = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'Address1') 
     Begin 
     set @Address1 = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'Address2') 
     Begin 
     set @Address2 = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'City') 
     Begin 
     set @City = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'StateProvince') 
     Begin 
     set @StateProvince = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'CountryCode') 
     Begin 
     set @CountryCode = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'StreetNumber') 
     Begin 
     set @StreetNumber = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'PostalCode') 
     Begin 
     set @PostalCode = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'SendEmail') 
     Begin 
     set @SendEmail = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'SendMail') 
     Begin 
     set @SendMail = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'SendText') 
     Begin 
     set @SendText = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
     if(SUBSTRING(@SubInput, @SubStartIndex, @SubEndIndex - 1) = 'KeyMember') 
     Begin 
     set @KeyMember = SUBSTRING(@SubInput, @SubEndIndex + 1, LEN(@SubInput)); 
     end 
    --End sperate item name and vakue 

    SET @Input = SUBSTRING(@Input, @EndIndex + 1, LEN(@Input)) 
END 
if(@KeyMember != 0) 
begin 
    exec usp_UpdateMember 0,@KeyMember,0,@MemberID,@FirstName,@LastName,@MiddleInitial,@NamePrefix,@NameSuffix,@Title,@CompanyName,@Status 
     ,@EnrollDate,@IsMainMember,@HomePhone,@MobilePhone,@WorkPhone,@DateofBirth,@Gender,@EmailAddress,@Notes,@Source,@EnteredBy 
     ,@Address1,@Address2,@City,@StateProvince,@CountryCode,@StreetNumber,@PostalCode,@SendEmail,@SendMail,@SendText,@EnteredBy,''          
     ,@retVal output,@retMsg output; 
end 

else 
begin 
    exec usp_CreateMember @KeyUser,@keyHousehold,@MemberID,@FirstName,@LastName,@MiddleInitial,@NamePrefix,@NameSuffix,@Title,@CompanyName,@Status,@EnrollDate,@IsMainMember 
     ,@HomePhone,@MobilePhone,@WorkPhone,@DateofBirth,@Gender,@EmailAddress,@Notes,@Source,@Address1,@Address2,@City,@StateProvince,@CountryCode,@StreetNumber,@PostalCode 
     ,@SendEmail,@SendMail,@SendText,@EnteredBy,@imgPath,@KeySession,@KeyClient,@retVal output,@retMsg output; 
end 

END

これはあなたの答えはどのようなことを期待します

+0

exec usp_CreateMemberByString 'MemberID:M001、名前:Kasun、姓:Harshana、会社名:cmp、登録日:1970年01月01日、MobilePhone:0112236987、DateofBirth:1970/01/01、性別:男性、EmailAddress:Email @ test。 com、Address1:Horana、KeyMember:104367 '、1,1,1,1、' msg ' –

関連する問題