2

これが私のコードですが、値を返し-1ます。NameフィールドにはUnicode値が含まれています。

  using (SqlConnection conn = new SqlConnection(connStr))
  {      
      string str = string.Format("select SrNo from Jat where Name=@Name");
      SqlCommand dCmd = new SqlCommand(str, conn);
      try
      {               
          dCmd.Parameters.AddWithValue("@Name","N" +Name);
          int i= dCmd.ExecuteNonQuery();
          return i;
      }
      catch
      { 
           throw; 
      }
   }
4

2 に答える 2

2

書き留める必要はありません

dCmd.Parameters.AddWithValue("@Name","N" +Name); 

これから「N」を削除しますが、nvarcharパラメータは作成されません

dCmd.Parameters.AddWithValue("@Name", Name); 

これを行うよりもnvarcharタイプのパラメータを作成するには

dCmd.Parameters.Add(new SqlParameter("@Name", SqlDbType.NVarChar)).Value = Name; 

これにより、このパラメーターをnvarcharパラメーターとして追加できるよりもnvarcharパラメーターが作成されます。

コードのもう1つの変更は、 ExecuteScalarを利用することです。

int i= Convert.ToInt32( dCmd.ExecuteScalar());

ExecuteNonQueyではなくExecuteScalarメソッドを使用してください....SrNoおよびNonQueryの非Sclarメソッドの戻り値は、更新および挿入クエリを使用するときに影響を受ける行を返すためです。

于 2012-09-20T08:56:53.953 に答える
1

まず、N''はUnicode文字列リテラルのTSQLでのみ必要です。

次に、SELECTedを返したい場合は、 ExecuteScalar()SrNrを使用します。

于 2012-09-20T09:00:09.097 に答える