显示数据库中的图像

时间:2011-12-02 20:10:49

标签: c# asp.net

我有一个简单的数据库,其中存储有书籍信息。 2本小说书籍和2本类别书籍..

例如:一本技术书;姓名,描述,isbn,作者,出版物,价格,图像

在数据库中,我没有存储实际图像,图像行只有图像的名称。例如cprog.jpeg我想在索引8

我将图像存储在项目的images文件中。 现在,我正在以div而不是gridview显示书籍。这显示很好,除了我不知道如何做图像。

我的问题是如何从数据库中显示正确的图像?请记住,我有几张图片。

strBooksInCategory = "<div>";

            foreach (DataTable table in dsgrid2.Tables)
            {
                foreach (DataRow row in table.Rows)
                {
                    strBooksInCategory +=
                          "<div style=\"height:150px;\">"  
                        + "  <div style=\"border-style:solid;height:100px;width:100px;float:left;\"> Image </div>"
                        + "  <div style=\"height:110px;float:left;padding-left:10px;\">"
                        + "   <div style=\"height=auto;left-margin:10px;\">" + row[0] + "</div>"
                        + "   <div style=\"height=auto;left-margin:10px;\">" + row[1] + "</div>"
                        + "   <div style=\"height=auto;left-margin:10px;\">" + row[2] + "</div>"
                        + "   <div style=\"height=auto;left-margin:10px;\">" + row[3] + "</div>"
                        + "   <div style=\"height=auto;left-margin:10px;\">" + row[4] + "</div>"
                        + "   <div style=\"height=auto;left-margin:10px;\">" + row[5] + "</div>"
                        + " </div>"
                        + "</div>";
                    strBooksInCategory += "<div style=\"height:10px;width=100%;\"></div>";
                    //foreach (DataColumn column in table.Columns)
                    //{
                    //    strBooksInCategory += "<div style=\"border-style:solid;\">" + row[column] + "</div>";
                    //}
                }
            }
            strBooksInCategory += "</div>";

以下是我如何从数据库中提取数据的功能:

private DataSet GetDataSet2()
    {
        // SQLiteConnection sqlite = new SQLiteConnection("Data Source=/path/to/file.db");
        //SQLiteConnection sqlite = new SQLiteConnection( "Data Source=" + Server.MapPath(@"~\App_Data\bookDB.db"));
        // SQLiteDataAdapter ad;

        string cid = Server.UrlDecode(Request.QueryString["Category"]);
        //string Cname = Request.QueryString["CategoryDescription"];
        lblCategory.Text = cid;
        DataSet ds2 = new DataSet();
        // this.TextBox1.Text = cid;

        String connectionString = "Data Source=" + Server.MapPath(@"~\App_Data\bookDB.db");
        String selectCommand = String.Format("Select * from Book where CategoryName = '{0}'", Request.QueryString);
        SQLiteConnection myConnection = new SQLiteConnection();
        myConnection.ConnectionString = connectionString;
        myConnection.Open();
        SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(selectCommand, myConnection);

        myConnection.Close();
        // DataSet ds = new DataSet();
        dataAdapter.Fill(ds2);
        return ds2;
    }

到目前为止,使用上面的代码在div中显示我的2本书

enter image description here

4 个答案:

答案 0 :(得分:1)

如果这只是HTML,则使用<img src="url" alt="some_text"/>,其中url将是存储图像的目录和图像名称的组合。

答案 1 :(得分:0)

我认为他们所说的并不是将数据存储在数据库中。将图像存储在磁盘上的文件夹中。仅将图像名称存储在数据库中,然后将图像名称附加到图像所在的路径。

答案 2 :(得分:0)

你在哪里

 + "  <div style=\"border-style:solid;height:100px;width:100px;float:left;\"> Image </div>" 

您需要标记但仍可以使用变量来显示正确的图像。 将映像目录的根路径保存在一个变量中。然后附加唯一的图像名称。

imagepath = imagedir + row[n];

然后在重复的行中使用它:

 + "<img src='" + imagepath + "' alt='' height='100' width='100'>"

您可能需要稍微调整一下css以使其全部正确定位,但这会将动态图像放入每一行。

答案 3 :(得分:0)

使用html image标签,提及带有filename的src属性,该属性由dataset返回。还有一件事要使用Select * from只使用所需的列名,这样可以提高安全性。

建议

  1. 使用GUID存储所有FileName,以便它们是唯一的
  2. 使用"<img src='" + Your Dataset ReturnedFileName + "'/>"
  3. 还可以使用适合您场景的转发器,而不是循环和创建,
  4. Repeater example

    Repeater Documentation