0

我的 sql 数据库中有图像表,其中包含三列名称 id、名称和图像。当我尝试检索图像时,它在第一行显示错误:

“你调用的对象是空的。”

我想查看下拉列表中的图像名称和图像控件中的图像名称。

SqlConnection con = new SqlConnection("Data Source=LOCALHOST\\SQLEXPRESS;Initial Catalog=testdb;Integrated Security=True");
        //SqlConnection con = new SqlConnection("Data Source=(localdb)\v11.0;Initial Catalog=tempdb;Integrated Security=True");
        protected void Page_Load(object sender, EventArgs e)
        {
            con.Open();

        SqlCommand cm = new SqlCommand("select * from image where name='" + DropDownList1.SelectedItem.ToString() + "'", con);
        SqlDataAdapter da = new SqlDataAdapter(cm);
        SqlDataReader dr = cm.ExecuteReader();
        try
        {
            if (dr.Read())
            {

                string image1 = Convert.ToString(DateTime.Now.ToFileTime());
                FileStream fs1 = new FileStream(image1, FileMode.CreateNew, FileAccess.Write);
                byte[] bimage1 = (byte[])dr["name"];
                fs1.Write(bimage1, 0, bimage1.Length - 1);
                fs1.Flush();
                Image1.ImageUrl = "~/Images/" + DropDownList1.SelectedItem.ToString();
                Image1.Visible = true;
            }
            dr.Close();
            con.Close();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
4

4 回答 4

1

您应该更改代码:

var index= DropDownList1.SelectedItem!=null?DropDownList1.SelectedItem.ToString():defaultitem;

然后在那个查询中你可以使用 index.

于 2013-09-13T12:55:33.817 回答
1

如果您在 SqlCommand 行上收到 NullReferenceException,则 DropDownList1.SelectedItem 可能为空。并在空对象上调用 ToString 会给出此 NullReferenceException 请尝试调试您的程序并将鼠标悬停在您的 SelectedItem 上以查看其是否为空

于 2013-09-13T12:43:25.500 回答
0

你在这里做了一些很奇怪的事情。看起来您正试图将图像写入磁盘,但您指定的字节是从名称列中转换的?

byte[] bimage1 = (byte[])dr["name"];
fs1.Write(bimage1, 0, bimage1.Length - 1);

如果图像的 url 保存在数据库中,则需要使用 WebClient 先下载图像的字节,然后才能将图像写入。看起来您还试图通过将 url 分配给 Image 控件来显示图像。但是,例外情况可能是因为您的下拉列表中没有选定的项目。

于 2013-09-13T12:50:35.437 回答
0

我认为您需要更换以下内容

 SqlCommand cm = new SqlCommand("select * from image where name='" + DropDownList1.SelectedItem.ToString() + "'", con);

SqlCommand cm = new SqlCommand("select * from image where name='" + Convert.ToString(DropDownList1.SelectedValue) + "'", con);

这可能不会给你你期望的记录,但它不会给你错误..试试吧!

于 2013-09-13T13:00:42.183 回答