Получение изображения из базы данных в сетку данных в C # - PullRequest
0 голосов
/ 17 февраля 2012

Я сохранил изображение в базу данных в двоичном формате.Я получаю сообщение об ошибке, когда пытаюсь его получить.В сообщении об ошибке говорится: «Имя соединения« ConnectionString »не найдено в конфигурации приложения или строка соединения пуста»Это мой код, что я делаю не так?

//Code for generic handler

<%@ WebHandler Language="C#" Class="Handler" %>

using System;
using System.Web;
using System.Configuration;
using System.Data.SqlClient;
public class Handler : IHttpHandler {

    public void ProcessRequest (HttpContext context) {
    SqlConnection con = new SqlConnection();
    con.ConnectionString = ConfigurationManager.ConnectionStrings["Data Source=ACER-   
                             PC\\SQLEXPRESS;Initial Catalog=imageDemo;Integrated 
                             Security=True"].ConnectionString;

    SqlCommand cmd = new SqlCommand();
    cmd.CommandText = "Select ImageName,Image from image" + " where ID =@ID";
    cmd.CommandType = System.Data.CommandType.Text;
    cmd.Connection = con;
    SqlParameter ImageID = new SqlParameter("@ID", System.Data.SqlDbType.Int);
    ImageID.Value = context.Request.QueryString["ID"];
    cmd.Parameters.Add(ImageID);
    con.Open();
    SqlDataReader dReader = cmd.ExecuteReader();
    dReader.Read();
    context.Response.BinaryWrite((byte[])dReader["Image"]);
    dReader.Close();
    con.Close();
}

    //Code for datagrid

    <asp:GridView ID="GridView1" runat="server" 
          AutoGenerateColumns="False" DataKeyNames="ID"
          DataSourceID="SqlDataSource1">
    <Columns>
    <asp:BoundField DataField="ID" HeaderText="ID" 
            InsertVisible="False" ReadOnly="True"
                           SortExpression="ID" />
    <asp:BoundField DataField="ImageName" HeaderText="ImageName" 
                           SortExpression="ImageName" />
    <asp:TemplateField HeaderText="Image">
    <ItemTemplate>
    <asp:Image ID="Image1" runat="server" 
       ImageUrl='<%# "Handler.ashx?ID=" + Eval("ID")%>'/>
    </ItemTemplate>
    </asp:TemplateField>
    </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
    SelectCommand="SELECT [ID], [ImageName], [Image] 
          FROM [image]"></asp:SqlDataSource>

Ответы [ 2 ]

3 голосов
/ 17 февраля 2012

"Источник данных = ACER-PC \ SQLEXPRESS; Начальный каталог = imageDemo; Интегрированная безопасность = True" - это строка подключения.

Проверьте ваш web.config и посмотрите, есть ли у вас что-то вроде этого:*

<connectionStrings>
    <add name="myConnection" connectionString="Data Source=ACER-PC\\SQLEXPRESS;Initial Catalog=imageDemo;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>

После этого измените свою строку на

con.ConnectionString = ConfigurationManager.ConnectionStrings["myConnection"].ConnectionString;
2 голосов
/ 17 февраля 2012

Неправильно:

con.ConnectionString = ConfigurationManager.ConnectionStrings [ "Источник данных = ACER-
ПК \ SQLEXPRESS; Исходный каталог = imageDemo; Интегрированная безопасность = True"
].ConnectionString;

Это должно быть ..

con.ConnectionString = "Источник данных = ACER-PC \ SQLEXPRESS; Начальный каталог = imageDemo; Интегрированная безопасность = True";

Или

con.ConnectionString = ConfigurationManager.ConnectionStrings ["YourConnection"]. ConnectionString;

Итак, вам нужно добавить следующее в ваш app.config или web.config

<connectionStrings>
<add name="YourConnection" connectionString="Data Source=ACER-PC\\SQLEXPRESS;Initial      Catalog=imageDemo;Integrated Security=True" providerName="System.Data.SqlClient"/>

...