sql >> データベース >  >> RDS >> Sqlserver

RESTful Web サービス + JSON + SQL ストアド プロシージャ プロジェクトに関する問題

    OK、それを機能させるために変更する必要があることがいくつかあります:

    <オール> <リ>

    逆シリアル化に必要になるため、パラメーターなしのコンストラクターを Note に追加します:

    public Note()
    {
    }
    
    <リ>

    メモのフィールドで「静的」を取り除く:

    public static 文字列 クライアント { get;設定; }

    public static int ケース { get;設定; }

    public static 文字列テキスト{get;設定; }

    public static int NoteId { get;設定; }

    public static 文字列 R1 { 取得;設定; }

    public static 文字列 R2 { 取得;設定; }

    public static 文字列 S1 { 取得;設定; }

    public static DateTime 日付 { get;設定; }

    public static ブール型 { get;設定; }

    <リ>

    オブジェクトが 1 つだけ必要な場合は、JSON 配列を送信しないでください。逆シリアル化されません。配列ではなく単一のオブジェクトが必要なので、配列を送信しないでください。

    <リ>

    Type は bool ですが、文字列 "1" を送信しています。これは期待どおりに真の値に逆シリアル化されません。 true/false ("true"/"false" ではない) を送信するか、Type の型を文字列に変更してください。

    <リ>

    そのプライベート アイテム フィールドを削除します。必要ありません:

    プライベート ノート アイテム;

    <リ>

    そこにあるコンストラクターを取り除きます

    公開メモ (文字列 json)

    公開メモ(メモ項目)

    それらは意味がなく、機能しないだけでなく、JSON デシリアライザーがフィールドに入力するため、それらは必要ありません。

    編集: たとえば、1 つのパラメーターを持つコンストラクターがなくなったため、ビルドされないとします。もちろんビルドしません、この行があります

    Note notesdata = new Note(item);
    

    しかし、その行は必要ありません。このラインの背後にあるアイデアは何ですか? Note クラスのインスタンスが必要ですが、既に "item" 変数に含まれています。その 2 番目のコピーを作成する必要はありません。だから、これもやめてください。

    コンパイルされないもう 1 つの理由は、これらの静的フィールドを取り除くことですが、Add メソッドにはまだこれがあります:

            cmd.Parameters.Add("@Text", SqlDbType.VarChar).Value = Note.Text.Trim();
            cmd.Parameters.Add("@When", SqlDbType.DateTime).Value = Note.Date;
    

    そして私はあなたがそれを望んでいないと確信しています.代わりに、送信されたオブジェクトのインスタンスを使用する必要があります:

            cmd.Parameters.Add("@Text", SqlDbType.VarChar).Value = item.Text.Trim();
            cmd.Parameters.Add("@When", SqlDbType.DateTime).Value = item.Date;
    

    もう 1 つのことは、通常、Add メソッドが DB に追加されるオブジェクトを返す理由がないということです。自由に変更してください

       public Note Add(Note item)
    

    これに

       public void Add(Note item)
    

    何も返さないでください。必要ありません。

    私は SqlConnection とその周辺の専門家ではないので、その部分についてはコメントしません。私のプロジェクトでは、DB を操作するために EF を使用しています。そのため、その部分に問題がある可能性がありますが、それについてはコメントできません。




    1. Integrated Security=TrueとIntegratedSecurity=SSPIの違いは何ですか?

    2. innoDBデッドロックの処理

    3. mysql jdbcドライバーは、複数のステートメントを含むトリガーの区切り文字をサポートしていません

    4. PHP 7でMySQLi拡張機能を有効にするにはどうすればよいですか?