1

エラー: 42883: 関数 insertvideo(文字可変、文字可変、倍精度、整数) が存在しません

しかし、そのストアドプロシージャは存在します!!! なぜこのエラーが続くのですか???

これは私の接続文字列です:

 <connectionStrings>
        <add name="myConnection" connectionString="Server=127.0.0.1; 
                   User Id=postgres; Password=myPass; Database=myDB; "/>
      </connectionStrings>

ストアド プロシージャはpublicスキーマ内にあり、正しく機能します。

    using (NpgsqlConnection conn = new NpgsqlConnection(ConfigurationManager.ConnectionStrings["AxWaveConnection"].ToString()))
    {
        try
        {
            conn.Open();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

        NpgsqlCommand cmd = new NpgsqlCommand("insertvideo", conn);
        cmd.CommandType = System.Data.CommandType.StoredProcedure;


        cmd.Parameters.Add(new NpgsqlParameter("out_scope_id", NpgsqlDbType.Bigint));
            cmd.Parameters["out_scope_id"].Direction = ParameterDirection.Output;

        cmd.Parameters.Add(new NpgsqlParameter("in_youtubeidvideo", NpgsqlDbType.Varchar, 15));
        cmd.Parameters["in_youtubeidvideo"].Value = VideoId;

        cmd.Parameters.Add(new NpgsqlParameter("in_title", NpgsqlDbType.Varchar, 200));
        cmd.Parameters["in_title"].Value = Title;

        cmd.Parameters.Add(new NpgsqlParameter("in_rating", NpgsqlDbType.Double));
        cmd.Parameters["in_rating"].Value = Rating;

        cmd.Parameters.Add(new NpgsqlParameter("in_viewcount", NpgsqlDbType.Integer));
        cmd.Parameters["in_viewcount"].Value = ViewCount;


        try
        {
            cmd.ExecuteNonQuery();

            scopeID = Convert.ToInt64(cmd.Parameters["out_scope_id"].Value);
        }
        catch (Exception e)
        {
            scopeID = -1;        //Duplicate Record
        }

        conn.Close();
4

3 に答える 3

1

サーバー=127.0.0.1; add name="ConnectionStringName" connectionString="server=ServerNameOrIP;database=DataBasename;uid=UserID;pwd=Password; Check this Correctly an try again. It will work. データベース接続が確立されていません。

于 2013-01-31T09:33:10.030 に答える
0

コマンド オブジェクトfunctionを渡すことはできません。NpgsqlCommandそこで許可されるのは、SQL クエリまたはストアド プロシージャの名前だけです。

最善の方法はSTORED PROCEDURE、内部に関数を含む を作成し、ado.net でプロシージャを呼び出すことです。

于 2013-01-31T09:36:25.647 に答える
0

以下の接続文字列を追加してください

<connectionStrings>
            <add name="myConnection" connectionString="Server=127.0.0.1; 
                       User Id=postgres; Password=myPass; Database=myDB; " providerName="postgre"/>
          </connectionStrings>
于 2013-03-17T07:34:05.070 に答える