0

今日は質問が多すぎましたが、もう 1 つ質問があります。画像をデータベースに保存しようとしています。何か解決できませんでした。画像を追加しようとすると、パラメータ文字列を BYTE[] に変換できないと表示されます。実際にはbytes[]をパラメータ値として与えています。解決しようとしましたが、答えが見つからなかったので、助けてください。これが私のコードです:

  Stream fs = FileUpload1.PostedFile.InputStream;
        BinaryReader br = new BinaryReader(fs);
        Byte[] bytes = br.ReadBytes((Int32)fs.Length);

        //insert the file into database
        string strQuery = "INSERT INTO Books(Book_Name, Author_Name, Image,In_Lib) VALUES (@BN, @AN, @IM,@LIB)";
        SqlCommand cmd = new SqlCommand(strQuery);
        string val1 = "" + TextBox1.Text;
        string val2 = "" + TextBox2.Text;
        cmd.Parameters.Add("@BN", SqlDbType.VarChar).Value = val1;
        cmd.Parameters.Add("@AN", SqlDbType.VarChar).Value= val2;
        cmd.Parameters.Add("@IM", SqlDbType.Binary).Value = bytes;
        cmd.Parameters.Add("@LIB", SqlDbType.Binary).Value = "NO";
        InsertUpdateData(cmd);
        lblMessage.ForeColor = System.Drawing.Color.Green;
        lblMessage.Text = "File Uploaded Successfully";
4

2 に答える 2

4

この行は無効です:

cmd.Parameters.Add("@LIB", SqlDbType.Binary).Value = "NO";

SQLに基づいて、そこでvarcharを使用するつもりだったようです。

于 2012-05-09T15:20:19.170 に答える
3

パラメータ"NO"の値として文字列を渡しました:Binary@LIB

cmd.Parameters.Add("@LIB", SqlDbType.Binary).Value = "NO";

それがあなたの問題だと思います。

于 2012-05-09T15:21:24.160 に答える