Web サイトを実行すると例外メッセージが表示される
「タイプ 'System.DBNull' のオブジェクトをタイプ 'System.String' にキャストできません。」
'return (string)c.Parameters["@vat"].Value;
以下のコードの 'の '値' 部分から出てきます。ストアドプロシージャをチェックして、クエリを実行するかどうかを確認しました。実行し、その出力も文字列です。誰でも助けることができます..??
namespace CamOnlineAccess
{
public class Utilities
{
public SqlConnection GetConnection()
{
SqlConnection c = new SqlConnection();
c.ConnectionString = ConfigurationManager.ConnectionStrings["CamOnlineConnectionString"].ConnectionString;
return c;
}
public SqlCommand GetCommandSP(string SPName)
{
SqlCommand c = new SqlCommand();
c.Connection = GetConnection();
c.CommandType = CommandType.StoredProcedure;
c.CommandText = SPName;
c.CommandTimeout = 150;
return c;
}
}
}
public string ViewUserVat(string code)
{
CamOnlineAccess.Utilities u = new CamOnlineAccess.Utilities();
SqlCommand c = u.GetCommandSP("dbo.ViewUserVat");
c.Parameters.AddRange(new System.Data.SqlClient.SqlParameter[] {
new System.Data.SqlClient.SqlParameter("@code", System.Data.SqlDbType.VarChar,50),
new System.Data.SqlClient.SqlParameter("@vat",SqlDbType.VarChar, 50, System.Data.ParameterDirection.Output, false, ((byte)(0)), ((byte)(0)), "", System.Data.DataRowVersion.Current, null)});
c.Parameters["@code"].Value = code;
c.Connection.Open();
c.ExecuteScalar();//because we have output parameters
c.Connection.Close();
return (string)c.Parameters["@vat"].Value;
}
保管手順
ALTER PROCEDURE [dbo].[ViewUserVat]
-- Add the parameters for the stored procedure here
@code varchar,
@vat varchar(50) output
AS
SELECT top 1 @vat=vattable from dbo.portfolio
where owner=@code