2016-03-06 80 views
-1

當我們使用連接字符串創建連接NullReferenceException發生時。錯誤是NullReferenceException由用戶代碼在c中未處理#

NullReferenceException由用戶代碼未處理。下面

我的代碼給出:

protected void upload_Click(object sender, EventArgs e) 
    { 

     string filename = Path.GetFileName(FileUpload1.PostedFile.FileName); 

     string contentType = FileUpload1.PostedFile.ContentType; 

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


         string constr =ConfigurationManager.ConnectionStrings["constr"].ConnectionString; 

         using (SqlConnection con = new SqlConnection(constr)) 
         { 
          string query = "insert into tblFiles values(@Name, @ContentType, @Data)"; 

          using (SqlCommand cmd = new SqlCommand(query)) 
          { 
           cmd.Connection = con; 
           cmd.Parameters.AddWithValue("@Name", filename); 
           cmd.Parameters.AddWithValue("@contentType", contentType); 
           cmd.Parameters.AddWithValue("Data", bytes); 
           con.Open(); 
           cmd.ExecuteNonQuery(); 
           con.Close(); 
          } 
         } 


       } 
     } 
     Response.Redirect(Request.Url.AbsoluteUri); 
    } 
+3

異常來自哪條線?你檢查FileUpload1.PostedFile是否爲空? – Patrick

+1

你能否檢查一下連接字符串是否帶有'constr'鍵實際上是在你的app.config/web.config文件中定義的? – RBT

回答

1

您正在使用數據,而不是@Data

cmd.Parameters.AddWithValue( 「數據」,字節)

所以這是正確的方式發送

cmd.Parameters.AddWithValue(「@ Data」,bytes);

1

您正在使用插入@Data變量,而您要發送的變量數據只有

cmd.Parameters.AddWithValue("Data", bytes); // error prompt code 

cmd.Parameters.AddWithValue("@Data", bytes); // correct Code 
+0

在提供sql參數的情況下,Sql參數無需使用@符號即可正常工作。 – RBT

-1

最大的可能是你的代碼拋出,因爲FileUpload1的NullReferenceException異常在表中的值.PostedFile爲null。

您可能在UpdatePanel中添加了FileUpload。如果是,那麼你需要使用PostBackTrigger。

相關問題