上传到asp.net中的数据库

时间:2014-05-27 16:32:11

标签: asp.net sql

我正在尝试将文件上传到数据库,但它给了我一个空的异常错误

这是错误: 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);
    }
}

1 个答案:

答案 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”命令,它将为您创建数据库,没有任何障碍。