2010-12-03 14 views
0

ストアドプロシージャにパラメータを渡そうとしています。彼らは、コードからこのSQL Server 2008へのパラメータの受け渡し

@p_latitude='',@p_longitude='',@p_miles='',@p_searchtext='',@p_maptownid=182,@p_regionid=0 

ように私は、私は、エラーcannot convert navarchar to floatを取得しています

cmd.Parameters.Add("@p_latitude", SqlDbType.NVarChar).Value="''"; 
cmd.Parameters.Add("@p_longitude", SqlDbType.NVarChar).Value="''"; 
cmd.Parameters.AddWithValue("@p_miles",0); 
cmd.Parameters.Add("@p_searchtext",SqlDbType.NVarChar).Value="''"; 
cmd.Parameters.AddWithValue("@p_maptownid",maptownid); 
cmd.Parameters.AddWithValue("@p_regionid",0); 

のようなパラメータを渡しています。 私はnull、string.emptyを送るさまざまな方法で試しました。しかし、それを見つけることはできません。

+1

パラメータの種類は?ストアドプロシージャのパラメータを投稿できますか? –

答えて

0

まあ、実際に、これは私が(私はあなたが同じことを行うことをお勧めので、彼らはすべての異なる層にあった)、それを行う方法です

SqlDbType.NVarChar

DbType.Stringを使用してみてください代わりに:

List<SqlParameter> parameters = new List<SqlParameter> { }; 

string status = "dummystatus"; 
string date = Datetime.Now; 
parameters.Add(new SqlParameter("@Status", status)); 
parameters.Add(new SqlParameter("@date", date)); 

SqlCommand cmd = new SqlCommand(); 
command.Connection = connection; 

//set the command text (stored procedure name or SQL statement) 
command.CommandText = commandText; 
command.CommandType = commandType; 
foreach (SqlParameter p in parameters) 
{ 
    command.Parameters.Add(p); 
} 
SqlDataAdapter da = new SqlDataAdapter(command); 
DataSet ds = new DataSet(); 

//fill the DataSet using default values for DataTable names, etc. 
da.Fill(ds); 

// detach the SqlParameters from the command object, so they can be used again.   
cmd.Parameters.Clear(); 
5

空の文字列は""ではなく"''"として渡す必要があります。アポストロフィ(')は文字列値として渡され、文字列区切り文字としては渡されません。 エラーメッセージには、nvarcharを渡すfloat列があると表示されます。私は、@ p_latitudeと@p_longtitudeのパラメータが問題であると考えています。値をDBNull.Valueとして直接設定してください。

2

私は緯度、経度、およびマイルが浮動小数点数であると推測しています。その場合は、次のように渡す必要があります。

cmd.Parameters.AddWithValue("@p_latitude", 0.0); 
cmd.Parameters.AddWithValue("@p_longitude", 0.0); 
cmd.Parameters.AddWithValue("@p_miles", 0.0); 
関連する問題