2016-06-22 8 views
0

に変換すると変換が失敗しました。 Visual StudioのC#コード。私が持っていたコードの私の元のビットは、ORGIDとLicensingKeyは、このコードはである方法で渡された2つのintですnvarchar値 'OrgID'をデータ型int

InsertQuery = "INSERT INTO License (OrgID, LicensingKey) VALUES (@OrgID, @LicensingKey)"; // Query to insert into the database table. 
SqlCommand cmd = new SqlCommand(InsertQuery, con); 
cmd.Parameters.Add("@LicensingKey", SqlDbType.Int).Value = LicensingKey; 
cmd.Parameters.Add("@OrgID", SqlDbType.Int).Value = OrgID; 
cmd.ExecuteNonQuery(); 

私は私のデータベースに作られた私のストアドプロシージャはこれです:。

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROCEDURE [dbo].[LicenseInsert] 
@OrgID int = OrgID, 
@LicensingKey int = LicensingKey 

AS 
BEGIN 
SET NOCOUNT ON; 
INSERT INTO License (OrgID, LicensingKey) 
VALUES (@OrgID, @LicensingKey) 
END 

そして今、同じコードのビットは、私はこれで置き換えられていたこと:

InsertQuery = "EXEC LicenseInsert "; // Query to insert into the database table. 
SqlCommand cmd = new SqlCommand(InsertQuery, con); 
cmd.ExecuteNonQuery(); 

BU Tはこれは私に「nvarchar型の値を変換する際の変換が失敗した 『ORGID』データ型intに」のエラーを与え、

cmd.ExecuteNonQuery(); 

が犯人であることを言っています。

誰かが私が間違っていることを通して私を歩くことができますか? ありがとうございました!

答えて

1

私はあなたが、パラメータが欠落しているというエラーのいくつかの並べ替えを取得したいことを期待しますが、あなただけのストアドプロシージャ名を使用してStoredProcedureにコマンドの種類を変更する必要があるストアドプロシージャを実行する:

InsertQuery = "LicenseInsert"; // Query to insert into the database table. 
SqlCommand cmd = new SqlCommand(InsertQuery, con); 
cmd.CommandType = CommandType.StoredProcedure; // <------------ 

cmd.Parameters.Add("@LicensingKey", SqlDbType.Int).Value = LicensingKey; 
cmd.Parameters.Add("@OrgID", SqlDbType.Int).Value = OrgID; 

cmd.ExecuteNonQuery(); 

また、ストアドプロシージャ定義が無効であると思います。それはする必要があります:

ALTER PROCEDURE [dbo].[LicenseInsert] 
@OrgID int, 
@LicensingKey int 
+0

ああ、CommandTypeは私を捨てていたものでした!あなたはストアドプロシージャの定義が無効であることについても正しくあります。私がやっていたことが有効であったかどうかは分かりませんでした。どうもありがとうございます!学習アドベンチャーは続けています! – JDawg848

関連する問題