2013-02-12 116 views
0

我正在嘗試在上傳文件中注入值。我是C#.net的新手,我搜索了很多東西以找到答案,但無法找到任何能夠提供我所需幫助的東西。我沒有從數據庫獲取值的問題,但是當我嘗試插入它時,總是返回false。我不知道還有什麼要做。插入查詢總是返回false

我在每一行nr都使用了斷點,但我真的需要這個幫助。

正如我所說的從數據庫獲取值沒有問題,所以我連接,但插入總是返回false。也許這個問題對於你的大人來說更清晰:)

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data; 
using System.Configuration; 
using System.Collections; 
using System.Data.SqlClient; 
using System.Xml; 
using System.Xml.Linq; 
using System.IO; 

public partial class Extra : System.Web.UI.Page 
{ 

    public int count = 0; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     Label1.Text = "Hello choose a file to upload"; 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 

     if (FileUpload1.HasFile) 
     { 
      try 
      { 
       if (FileUpload1.PostedFile.ContentLength > 2000000) 
       { 
        Label1.Text = "File is to big"; 
       } 
       else 
       { 
        FileUpload1.SaveAs("C:\\Uploads\\" + FileUpload1.FileName); 
        Label1.Text = "File name: " + FileUpload1.PostedFile.FileName + "<br />" + 
         FileUpload1.PostedFile.ContentLength + "kb<br />" + 
         FileUpload1.PostedFile.ContentType; 

        try 
        { 
         //open connection 
         SqlConnection con = new SqlConnection("Data Source='localhost';Initial Catalog=webDB;Trusted_Connection=true;Integrated Security=SSPI"); 
         //con.Database = "";Data Source=JOHANNES-TOSH;Initial Catalog=webDB;Integrated Security=True 
         con.Open(); 

         SqlCommand cmd = new SqlCommand(); 
         cmd.Parameters.Add("@name", SqlDbType.NVarChar, 150); 
         cmd.Parameters["@name"].Value = FileUpload1.PostedFile.FileName; 
         cmd.Parameters.Add("@type", SqlDbType.NVarChar, 150); 
         cmd.Parameters["@type"].Value = FileUpload1.PostedFile.ContentType; 
         cmd.Parameters.Add("@size", SqlDbType.Int, 11); 
         cmd.Parameters["@size"].Value = FileUpload1.PostedFile.ContentLength; 
         cmd.CommandText = "INSERT INTO [CORE.uploads] (name, type, size) VALUES (@name, @type, @size)"; 
         //cmd.CommandType = CommandType.TableDirect; 
         cmd.Connection = con; 
         cmd.ExecuteNonQuery(); 

         con.Close(); 
        } 
        catch (SqlException err) { 
         Response.Write("<br />"); 
         Response.Write(err.Message.ToString()); 
         Response.Write(err.LineNumber); 
        } 
       } 

      } 
      catch (Exception ex) 
      { 
       Label1.Text = ex.Message.ToString(); 
      } 
     } 
     else 
     { 
      Label1.Text = "You have not specified a file."; 
     } 
    } 

} 
+6

哪條線返回false? – 2013-02-12 19:39:22

+0

什麼是這個布爾val1 =「東西...」;回覆於(VAL1);在那裏做?這總是錯誤的。 – 2013-02-12 19:40:48

+1

您的代碼存在許多問題:您的SqlConnection,SqlCommand,SqlDataReader等不在「使用」塊中。另外,你使用'err.Message'而不是'err.ToString()',而'err.Message'已經是一個字符串了,所以不需要'.ToString()'。 – 2013-02-12 19:50:09

回答

1

你並不需要爲這種情況指定參數類型的大小。試試這種方式。 如果這不起作用,請檢查您的表名稱和列名以確保它是相同的。另外,請檢查您的其他代碼。 希望得到這個幫助。

SqlCommand cmd = new SqlCommand(); 
cmd.Parameters.Add("@name", SqlDbType.NVarChar).Value = FileUpload1.PostedFile.FileName; 
cmd.Parameters.Add("@type", SqlDbType.NVarChar).Value = FileUpload1.PostedFile.ContentType; 
cmd.Parameters.Add("@size", SqlDbType.Int).Value = FileUpload1.PostedFile.ContentLength; 
cmd.CommandText = "INSERT INTO [CORE].[uploads] (name, type, size) VALUES (@name, @type, @size)"; 
cmd.Connection = con; 
cmd.ExecuteNonQuery(); 

編輯:此外,請確保您的連接字符串是好的。如果用數據庫連接打開窗口(忘記該窗口的名稱),則可以在數據庫連接的屬性中找到它(