2012-03-23 20 views
0

我想使用FileUpload控件将图像插入到我的数据库。我试图用下面的代码来做到这一点:使用FileUpload将图像插入数据库

protected void btnUploadAvatar_Click(object sender, EventArgs e) 
    { 
     if (fuAvatar.PostedFile != null && fuAvatar.PostedFile.FileName != "") ; 
     { 
      byte[] imageSize = new byte[fuAvatar.PostedFile.ContentLength]; 

      HttpPostedFile uploadImage = fuAvatar.PostedFile; 

      uploadImage.InputStream.Read(imageSize, 0, fuAvatar.PostedFile.ContentLength); 

      SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"); 

      SqlCommand cmd = new SqlCommand(); 

      cmd.CommandText = "INSERT INTO User(image" + "VALUES (@Image) WHERE userid = @Userid"; 

      cmd.CommandType = CommandType.Text; 

      cmd.Connection = con; 

      SqlParameter UploadedImage = new SqlParameter("@Image", SqlDbType.Image, imageSize.Length); 
      UploadedImage.Value = imageSize; 

      SqlParameter userid = new SqlParameter("@Userid", SqlDbType.Int); 
      userid.Value = Convert.ToInt32(Session["userid"]); 

      cmd.Parameters.Add(userid); 
      cmd.Parameters.Add(UploadedImage); 

      con.Open(); 
      cmd.ExecuteNonQuery(); 
      con.Close(); 

      /*if(result > 0) 
      { 
       lblResult.Text = "Avatar lastet opp"; 
      }*/ 
     } 
    } 

但我得到一个错误的cmd.ExecuteNonQuery();其中说:用户代码未处理SqlException,关键字'用户'附近的语法错误。我已经尝试了10KB以下的* .jpg和* .png文件。

回答

1

你有一个语法错误:

cmd.CommandText = 
      "INSERT INTO User(image" + "VALUES (@Image) WHERE userid = @Userid"; 

存在丢失)和间距有:

cmd.CommandText = 
      "INSERT INTO User(image)" + " VALUES (@Image) WHERE userid = @Userid"; 

或者,更好的(为什么串连呢?):

cmd.CommandText = 
      "INSERT INTO User(image) VALUES (@Image) WHERE userid = @Userid"; 
+0

谢谢你的工作,但我找到了另一种方式。不管怎么说,还是要谢谢你! – Twistar 2012-03-23 14:41:56