2012-01-04 11 views
1

動作していないレコードを更新するための単純なストアドプロシージャを作成しましたが、その理由は分かりません。例外はスローされませんが、レコードは更新されません。C#から呼び出されたストアドプロシージャはレコードを更新しません

、以下を参照してくださいコード:

public int IMGId; 

protected void btnUpdate_Click(object sender, EventArgs e) 
    { 
     string result = ""; 
     string sSQL = "usp_imageloader_update"; 


     using (SqlConnection dbConnection = new SqlConnection(CKS_app_settings.sql_conn_string_db)) 
     { 
      // SqlTransaction tn=null; 
      try 
      { 
       dbConnection.Open(); 
       //start Transaction 
       // tn = dbConnection.BeginTransaction(); 
       SqlCommand command = new SqlCommand(sSQL, dbConnection); 
       //command.Transaction = tn; 
       command.CommandText = sSQL; 
       command.CommandType = CommandType.StoredProcedure; 
       command.CommandTimeout = 1024; 
       command.Parameters.AddWithValue("@p_image_id", IMGId); 
       command.Parameters.AddWithValue("@p_url", txtUrl.Text); 
       command.Parameters.AddWithValue("@p_alt_text", txtAlt.Text); 
       //command.Parameters.AddWithValue("@p_filepath", File1.Value); 
       //command.Parameters.AddWithValue("@p_cntr_id", str_id); 
       int rowsAffected = command.ExecuteNonQuery(); 
      } 
      catch (SqlException ex) 
      { 
       // throw ex; 

       //If it failed for whatever reason, rollback the //transaction 
       //tn.Rollback();       
       //No need to throw because we are at a top level call and //nothing is handling exceptions 
       result = ex.InnerException.Message; 
      } 
     } 

は、SQL Serverでのストアドプロシージャを

USE [smsdb_test_griffin2] 
GO 
/****** Object: StoredProcedure [dbo].[usp_imageloader_update] Script Date: 01/04/2012 09:05:41 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER procedure [dbo].[usp_imageloader_update] 
@p_image_id INT, 
@p_url VARCHAR(255), 
@p_alt_text VARCHAR(255) 
as 

UPDATE Image_Library_UK 
SET 
[email protected]_url, 
[email protected]_alt_text 

WHERE [email protected]_image_id 
+7

あなたのSPは、C#コードではなく、単独で実行すると機能しますか? – razlebe

+0

T-SQLあなたは言う? GOはT-SQLのストアドプロシージャでは動作しません。 –

+0

あなたはC#で渡された値でSQL Managamentでexec手続きを試みましたか? – Mariusz

答えて

1

は、これが機能することを想定して、孤立してそれを試してみました(と間違っ紛れも明白なものはありません)、Iあなたのパラメータの1つが正しく設定されていないと仮定します。 IMGidが正しいとは言えません。そうすれば、ページの読み込みによってurlとalttextがすでに値にリセットされている可能性があります。

呼び出し時の値を確認してください。 !Page.IsPostBackを使用して、ポストバックでこれらの値をリセットしないといけないかもしれません。リクエスト変数を使用してアクセスする必要があるかもしれません。残りのコードに依存します。

+0

私はIDのint値をハードコードし、ストアドプロシージャが機能しました。私はコードからIDを取得するときに何かが間違っていたと思います。助けてくれた皆様に感謝します! –

関連する問題