2016-05-30 15 views
0

C#コード:イメージをSQLデータベースに保存する方法は?

SqlCommand NewUser = new SqlCommand("INSERT INTO [User] Values (@username,@password,@name,@lastname,@location,@profesion,@email,@gender,@money,@pro,@xp,@lv,@m1,@m2,@m3,@m4,@m5,@d1,@d2,@d3,@d4,@d5,@im);", c); 
     NewUser.Connection = c; 
     NewUser.Parameters.AddWithValue("@username", txtuser.Text); 
     NewUser.Parameters.AddWithValue("@password", txtpass.Text); 
     NewUser.Parameters.AddWithValue("@name", txtFName.Text); 
     NewUser.Parameters.AddWithValue("@lastname", txtLName.Text); 
     NewUser.Parameters.AddWithValue("@location", ddlcountry.SelectedItem.Text); 
     NewUser.Parameters.AddWithValue("@profesion", txtprofession.Text); 
     NewUser.Parameters.AddWithValue("@email", txtemail.Text); 
     NewUser.Parameters.AddWithValue("@gender", rbgendere.SelectedItem.Text); 
     NewUser.Parameters.AddWithValue("@money", 0); 
     NewUser.Parameters.AddWithValue("@pro", DBNull.Value); 
     NewUser.Parameters.AddWithValue("@xp", 0); 
     NewUser.Parameters.AddWithValue("@lv", 1); 
     NewUser.Parameters.AddWithValue("@m1", 0); 
     NewUser.Parameters.AddWithValue("@m2", 0); 
     NewUser.Parameters.AddWithValue("@m3", 0); 
     NewUser.Parameters.AddWithValue("@m4", 0); 
     NewUser.Parameters.AddWithValue("@m5", 0); 
     NewUser.Parameters.AddWithValue("@d1", 0); 
     NewUser.Parameters.AddWithValue("@d2", 0); 
     NewUser.Parameters.AddWithValue("@d3", 0); 
     NewUser.Parameters.AddWithValue("@d4", 0); 
     NewUser.Parameters.AddWithValue("@d5", 0); 
     NewUser.Parameters.AddWithValue("@im",); 
     Session["CurentUserid"] = txtuser.Text; 
     c.Open(); 
     NewUser.ExecuteNonQuery(); 
     c.Close(); 
     Session["Conect"] = (bool)true; 
     Response.Redirect("Finish Had Member.aspx", true); 

テーブルコード:

<input runat="server" id="pho" type="file" name="file[]" multiple="" accept="image/*" /> 

CREATE TABLE [dbo].[User] (
    [Username] VARCHAR (100) NOT NULL, 
    [Pasword] VARCHAR (100) NOT NULL, 
    [FName]  VARCHAR (MAX) NOT NULL, 
    [LName]  VARCHAR (MAX) NOT NULL, 
    [Location] VARCHAR (MAX) NOT NULL, 
    [Profesion] VARCHAR (MAX) NOT NULL, 
    [email]  VARCHAR (MAX) NOT NULL, 
    [gender] VARCHAR (MAX) NOT NULL, 
    [money]  INT    NOT NULL, 
    [property] VARCHAR (MAX) NULL, 
    [xp]  INT    NOT NULL, 
    [level]  INT    NOT NULL, 
    [mission1] INT    NOT NULL, 
    [mission2] INT    NOT NULL, 
    [mission3] INT    NOT NULL, 
    [mission4] INT    NOT NULL, 
    [mission5] INT    NOT NULL, 
    [did1]  INT    NOT NULL, 
    [did2]  INT    NOT NULL, 
    [did3]  INT    NOT NULL, 
    [did4]  INT    NOT NULL, 
    [did5]  INT    NOT NULL, 
[image]  VARBINARY (MAX) NULL, 
    PRIMARY KEY CLUSTERED ([Username] ASC) 
); 

私は、これはhtmlですデータベースにC#のページから画像を保存したいですどうすればいい? 画像を保存するにはどうすればいいですか?

私は番目のフル・テーブルここ

+0

これを試してみてください:NewUser.Parameters.Add( "@イム"、System.Data.SqlDbType.VarBinary)。 NewUser.Parameters ["@ im"] = image; – jdweng

+0

私は何のイメージを置くべきですか? –

+6

http://stackoverflow.com/questions/744589/how-do-you-store-a-picture-in-anage-column/744603#744603 – Tewr

答えて

0

があるコードを更新するSQL Serverに画像を格納するためのサンプルコードである:

SqlConnection conn = new SqlConnection(connectionString); 

try 
{ 
    int imageLength = uploadInput.PostedFile.ContentLength; 
    byte[] picbyte = new byte[imageLength]; 
    uploadInput.PostedFile.InputStream.Read (picbyte, 0, imageLength); 

    SqlCommand command = new SqlCommand("INSERT INTO ImageTable (ImageFile) VALUES (@Image)", conn); 
    command.Parameters.Add("@Image", SqlDbType.Image); 
    command.Parameters[0].Value = picbyte; 

    conn.Open(); 
    command.ExecuteNonQuery(); 
    conn.Close(); 
} 
finally 
{ 
    if (conn.State != ConnectionState.Closed) 
    { 
     conn.Close(); 
    } 
} 

注: uploadInputファイル入力制御され、画像をアップロードしますファイルをサーバーに転送します。 ASP.NETアプリケーションから取得したコード。

INSERT INTO ImageTable (ImageColumn) 

SELECT ImageColumn FROM 
OPENROWSET(BULK N'C:\SampleImage.jpg', SINGLE_BLOB) 
AS ImageSource(ImageColumn); 

EDIT:here

+0

私のデータベースでは、誰かがimagectにcorectlyを挿入する答えを送ることができます。 –

+0

エラーはどうなりますか? – SSJGSS

0
Try this.. 

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

SqlCommand NewUser = new SqlCommand("INSERT INTO [User] Values (@username,@password,@name,@lastname,@location,@profesion,@email,@gender,@money,@pro,@xp,@lv,@m1,@m2,@m3,@m4,@m5,@d1,@d2,@d3,@d4,@d5,@im);", c); 
     NewUser.Connection = c; 
     NewUser.Parameters.AddWithValue("@username", txtuser.Text); 
     NewUser.Parameters.AddWithValue("@password", txtpass.Text); 
     NewUser.Parameters.AddWithValue("@name", txtFName.Text); 
     NewUser.Parameters.AddWithValue("@lastname", txtLName.Text); 
     NewUser.Parameters.AddWithValue("@location", ddlcountry.SelectedItem.Text); 
     NewUser.Parameters.AddWithValue("@profesion", txtprofession.Text); 
     NewUser.Parameters.AddWithValue("@email", txtemail.Text); 
     NewUser.Parameters.AddWithValue("@gender", rbgendere.SelectedItem.Text); 
     NewUser.Parameters.AddWithValue("@money", 0); 
     NewUser.Parameters.AddWithValue("@pro", DBNull.Value); 
     NewUser.Parameters.AddWithValue("@xp", 0); 
     NewUser.Parameters.AddWithValue("@lv", 1); 
     NewUser.Parameters.AddWithValue("@m1", 0); 
     NewUser.Parameters.AddWithValue("@m2", 0); 
     NewUser.Parameters.AddWithValue("@m3", 0); 
     NewUser.Parameters.AddWithValue("@m4", 0); 
     NewUser.Parameters.AddWithValue("@m5", 0); 
     NewUser.Parameters.AddWithValue("@d1", 0); 
     NewUser.Parameters.AddWithValue("@d2", 0); 
     NewUser.Parameters.AddWithValue("@d3", 0); 
     NewUser.Parameters.AddWithValue("@d4", 0); 
     NewUser.Parameters.AddWithValue("@d5", 0); 
     NewUser.Parameters.AddWithValue("@im", bytes); 
     Session["CurentUserid"] = txtuser.Text; 
     c.Open(); 
     NewUser.ExecuteNonQuery(); 
     c.Close(); 
     Session["Conect"] = (bool)true; 
     Response.Redirect("Finish Had Member.aspx", true); 

を参照してください、このトピックについての詳細を知っている**

ここ

は、画像入力された列に挿入スクリプトです編集:私は自分のシステムでそれを試してみました。以下のコードは、 バイナリ形式のイメージを正常に挿入します。

**

SQLテーブル

CREATE TABLE [dbo].[Image_table]( 

    [Id] [int] IDENTITY(1,1) NOT NULL, 
    [image]  VARBINARY (MAX) NULL 
    ) 



protected void Button1_Click(object sender, EventArgs e) 
    { 
     Stream fs = FileUpload.PostedFile.InputStream; 
     BinaryReader br = new BinaryReader(fs); 
     Byte[] bytes = br.ReadBytes((Int32)fs.Length); 

     string consString = ConfigurationManager.ConnectionStrings["connectionKey"].ConnectionString; 
     SqlConnection con = new SqlConnection(consString); 

      try 
      { 
       SqlCommand cmd = new SqlCommand(); 
       cmd.CommandType = CommandType.Text; 
       cmd.CommandText = "insert into [dbo].[Image_table] values (@img)"; 
       cmd.Parameters.Add("@img", SqlDbType.Image).Value = bytes; 
       cmd.Connection = con; 
       con.Open(); 
       cmd.ExecuteNonQuery(); 
       con.Close(); 

      } 
      catch (Exception ex) 
      { 
       throw ex; 
      } 

    } 
+0

私は一度にすべてを挿入する必要があると思う? –

+0

ユーザはブラウズ>イメージファイルを選択>をクリックすると、このコードの最初の行にコントロールが表示され、DBにイメージを保存する必要があると言われるので、一度に1つずつDBにイメージが保存されます。 FileUploadコントロールを使用します。複数のイメージを保存する場合は、forループを使用します。 – Sak

+0

okですが、imgなしで最初の完全な挿入を行う方法はありますか? –

関連する問題