我正在尝试将文件上传到数据库,但它给了我一个空的异常错误
这是错误: System.NullReferenceException:未将对象引用设置为对象的实例。
任何人都可以帮我找到错误:
这是aspx代码
<div>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="Upload" />
<hr />
<asp:GridView ID="GridView1" runat="server" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White"
RowStyle-BackColor="#A1DCF2" AlternatingRowStyle-BackColor="White" AlternatingRowStyle-ForeColor="#000"
AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Name" HeaderText="File Name"/>
<asp:TemplateField ItemStyle-HorizontalAlign = "Center">
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
这是背后的代码:
using System;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
public partial class DatabaseDownload : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Upload(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);
}
}
答案 0 :(得分:1)
如果您的连接名为
<add name="DefaultConnection" ...
然后您可以使用相同的密钥(DefaultConnection)获取其值
string constr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
现在如果由于某些原因导致db不起作用(可能你删除了DB文件等),你可以尝试通过删除DB来修复它。从命令行执行此操作。在“开始/程序菜单 - &gt;所有程序 - &gt; Visual Studio 2012-&gt; Visual Studio工具”下打开“VisualStudio的开发人员命令提示”
运行以下命令:
sqllocaldb.exe stop v11.0
sqllocaldb.exe delete v11.0
现在从包管理器控制台执行“update-database”命令,它将为您创建数据库,没有任何障碍。