0

テーブルに新しいタプルを挿入するのに問題があります。エラーは発生せず、正しく機能しない理由もわかりません。ちなみに、TextBox3にはC:\ Temp\Pic5.jpgのようなものがあります。これが私のコードです:

  protected void Button3_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\MYDB.mdf;Integrated Security=True;User Instance=True");
    byte[] data;

    try
    {
        data = System.IO.File.ReadAllBytes(@"" + TextBox3.Text);
        string val1 = "" + TextBox1.Text;
        string val2 = "" + TextBox2.Text;
        string val3 = "" + TextBox3.Text;
        SqlCommand cmd = new SqlCommand("Insert INTO Books (Book_Name,Author_Name,Image,In_Lib) VALUES (@BN,@AN,@DATA,@LIB)", con);
        cmd.Parameters.AddWithValue("@BN", val1);
        cmd.Parameters.AddWithValue("@AN", val2);
        cmd.Parameters.AddWithValue("@DATA", val3);
        cmd.Parameters.AddWithValue("@LIB", "YES");
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
    }

    catch (Exception err)
    {
        Console.WriteLine(err.Message);
    }
}

asp部分

Book Name:   
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
Author Name:&nbsp;
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
Image Name:&nbsp;&nbsp;
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button3" runat="server" onclick="Button3_Click" Text="Submit" />
<br />

私のデータベースは次のようなものです。

  • Book_Name varchar(50)
  • Author_Name varchar(50)
  • 画像画像
  • In_Lib varchar(50)
4

4 に答える 4

2

Image列のタイプがであるためImage、正しいパラメータ値は文字列ではなくバイト配列になります。これにより、エラーが発生する可能性があります。現在画像を追加していない場合は、このパラメータを省略するか、DBNull.Value明示的に設定してください。

Visual Basicのバックグラウンドから来ていると思います(そうでなければ、奇妙な"" + TextBox1.Text構造の説明はありません)。補足として、toの呼び出しに渡される値はAddWithValue、データベースの列タイプと一致する必要があります。つまり、 。intを渡さない限り、型のパラメータに文字列を渡すことは機能する可能性がありますHello。このようなエラーは見つけにくい場合がありますので、最初からパラメータタイプを一致させてください。

于 2012-05-09T13:08:54.383 に答える
1

TextBox3.Textで指定されたファイルを読み込んでdataいて、どこでも使用していません。また、Imageフィールドにテキストを渡しているので、おそらくやりたかったでしょう

cmd.Parameters.AddWithValue("@DATA", data);

それ以外の

cmd.Parameters.AddWithValue("@DATA", val3);
于 2012-05-09T13:11:27.757 に答える
0

私は以下がうまくいくと思います

試す:

cmd.Parameters.Add("parameter_name", System.Data.SqlDbType.BigInt).Value = 1233;
于 2012-05-09T13:04:42.450 に答える
0

あなたの問題は画像にあります。データベースには、データ型のデータベースフィールドImageがImageあり、文字列データを保存しようとしています。

string val3 = "" + TextBox3.Text;
cmd.Parameters.AddWithValue("@DATA", val3);

でストアを作成しSqlDbType.Imageます。

于 2012-05-09T13:20:29.247 に答える