C# 使用webservice从SQL Server添加和检索映像

C# 使用webservice从SQL Server添加和检索映像,c#,asp.net,web-services,C#,Asp.net,Web Services,我正在尝试向SQL Server数据库添加一个映像,并使用web服务在asp.net网站中检索它 我不知道我的专栏需要什么类型(我看到一些例子说它应该是VARBINARY(MAX)) 那么,一旦图像进入数据库,我需要在web方法中做什么才能在web站点的GridView中显示它呢 另外,我在我的服务中使用dataset填充适配器并将其返回到网站。让我们想象一下,我们有一个包含列id(int)和列image(VARBINARY(MAX))的表。 要上载图像,请执行以下操作: byte[] byte

我正在尝试向SQL Server数据库添加一个映像,并使用web服务在asp.net网站中检索它

我不知道我的专栏需要什么类型(我看到一些例子说它应该是
VARBINARY(MAX)

那么,一旦图像进入数据库,我需要在web方法中做什么才能在web站点的GridView中显示它呢


另外,我在我的服务中使用dataset填充适配器并将其返回到网站。

让我们想象一下,我们有一个包含列id(int)和列image(VARBINARY(MAX))的表。 要上载图像,请执行以下操作:

byte[] bytes = File.ReadAllBytes("File path and name");
SqlConnection con = new SqlConnection("Connection string");
SqlCommand command = new SqlCommand("INSERT INTO [tablename]([id], [image]) VALUES(@id,@image)", con);
command.Parameters.AddWithValue("@id", 1);
command.Parameters.AddWithValue("@image", bytes);

con.Open();
command.ExecuteNonQuery();
con.Close();
现在,图像已上载到数据库

要从数据库检索数据,请创建一个字典:

Dictionary<int, byte[]> images = new Dictionary<int, byte[]>();
public Dictionary<int, byte[]> GetImages()
{
    Dictionary<int, byte[]> data = new Dictionary<int, byte[]>();
    SqlConnection con = new SqlConnection("Your connection string");
    SqlCommand command = new SqlCommand("SELECT * FROM [tablename]", con);
    con.Open();
    SqlDataReader sdr = command.ExecuteReader();
    while(sdr.Read())
    {
        data.Add((int)sdr["id"], (byte[])sdr["image"]);
    }
    con.Close();
    return data;
}
字典图像=新建字典();
公共字典GetImages()
{
字典数据=新字典();
SqlConnection con=newsqlconnection(“您的连接字符串”);
SqlCommand=newsqlcommand(“从[tablename]中选择*”,con);
con.Open();
SqlDataReader sdr=command.ExecuteReader();
while(sdr.Read())
{
添加((int)sdr[“id”],(byte[])sdr[“image”];
}
con.Close();
返回数据;
}

从数据类型开始,我确实会选择VARBINARY(MAX)

从数据库中检索图像的一种常用方法是编写图像处理程序。可以通过url从处理程序请求图像。因此,如果处理程序url为/images.ashx?id=1,则它可以从id为1的行中获取图像。显然,您不必使用id querystring参数,但这是我能看到的最简单的示例

然后在数据集中,您只需将url返回到图像处理程序


这是一个很好的教程,可以执行类似的操作,但使用aspx页面而不是处理程序:

我相信您可以使用从数据库接收的byteArray创建一个新的MemoryStream,并使用此MemoryStream加载位图:

Dim mem As New IO.MemoryStream(thebyteArray)
Dim img As System.Drawing.Bitmap = System.Drawing.Bitmap.FromStream(mem)

如何将图像数据发送到web服务?使用编码字符串?我不太明白您的要求,但我使用sql string=“select*from Pictures”拍摄图像,它以二进制形式检索名称和图片。从如何使GridView显示静态图像开始,
something.jpg
?首先让它工作,然后找出如何使它显示的图像来自您的代码(可能让您的代码返回
something.jpg
),然后找出如何从数据库中获取图像。您还应该指定计划使用的web服务技术。您应该使用WCF或REST,但最好知道如何回答您的问题。好的,一旦将其上载到数据库中,如何在服务中创建一个web方法,以返回图像并在站点中显示gridview?