aspx图片显示问题,急需解决. 大抛分!

SKYWIND6521 2002-05-22 07:35:47
我现在要用aspx不久,但是遇到了一个问题,
就是 C#.net 写aspx,有什么控件可以实现从sql读某字段值出来作为一个img
的src属性值?

不用什么控件可以做出的也行!

凡参与讨论者有分
...全文
116 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yxrj 2002-05-23
  • 打赏
  • 举报
回复
从sql里读出你要的一个src
然后指定image控件的src就可以了

至于怎么读数据库,看你用的数据库了
yxrj 2002-05-23
  • 打赏
  • 举报
回复
using System.Data.SqlClient;
yxrj 2002-05-23
  • 打赏
  • 举报
回复
sqlserver(C#)

string sConn="data source=yourserver;initial catalog=yourdb;user id=sa;password=";
string sSql="select imageSrc from yourtable where id='2'";
sqlConn = new SqlConnection(sConn);
sqlConn.Open();SqlCommand cmd=new SqlCommand(sSql,sqlConn);
string src=(string)cmd.ExecuteScalar();
sqlConn.Close();
Image1.ImageUrl=src;
SKYWIND6521 2002-05-23
  • 打赏
  • 举报
回复
兄弟大概刚从ASP 转过来的吧?
我以前也是做ASP的,不过转学ASPX后,才发现两者有些地方很不相同的。

这个问题最后还是由我用另一些方法搞定了。
代码公开,希望以后大家可以一起学习学习:
WebForm建一个 asp:image ,ID=Image1
在codebehind的Page_Load里写以下代码

sqlConnection1.Open();
string picselect="select * from pictures";
//从表pictures中读出m行n列的表
SqlCommand sqlcmdSelect = new SqlCommand(picselect,sqlConnection1);
// 创建查询对象
SqlDataReader readSelect = sqlcmdSelect.ExecuteReader();
// 返回查询的结果集对象
//关键在下面
if(readSelect.Read()) //第一次Read, 是定位在那m行n列的第一行
{ Image1.ImageUrl=readSelect.GetString(0);
//GetString()参数是指定列数
。。。。。。。。
再Read一次的时候,是定位到下一行记录
}
readSelect.Close(); //记得Close 个read
sqlConnection1.Close();

以上的方法就可以应用到不只图片这么简单的问题了。 :)
我昨晚研究了到深夜4点了,希望对你们有帮助吧
hbxtx 2002-05-23
  • 打赏
  • 举报
回复
是的,谢谢?
yxrj 2002-05-23
  • 打赏
  • 举报
回复
做个假定
数据库表
id imageSrc
1 a.gif
2 b.gif
3 a.gif

image控件,显示id为2的纪录所对应的图片(b.gif)

你是这个意思吗?
是的话咱们再继续
hbxtx 2002-05-23
  • 打赏
  • 举报
回复
能不能给一段简单的代码?
yunhi 2002-05-22
  • 打赏
  • 举报
回复
用分组查询。
yellowwee 2002-05-22
  • 打赏
  • 举报
回复
别人写的,可以参考一下:


DataReader 的默认行为是在整个数据行可用时立即以行的形式加载传入数据。但是,对于二进制大对象 (BLOB) 则需要进行不同的处理,因为它们可能包含数十亿字节的数据,而单个行中无法包含如此多的数据。Command.ExecuteReader 方法具有一个重载,它将采用 CommandBehavior 参数来修改 DataReader 的默认行为。您可以将 CommandBehavior.SequentialAccess 传递到 ExecuteReader 方法来修改 DataReader 的默认行为,以便让 DataReader 按照顺序在接收到数据时立即将其加载,而不是加载数据行。这是加载 BLOB 或其他大数据结构的理想方案。

在将 DataReader 设置为使用 SequentialAccess 时,务必要注意访问所返回字段的顺序。DataReader 的默认行为是在整个行可用时立即加载该行,这使您能够在读取下一行之前按任何顺序访问所返回的字段。但是,当使用 SequentialAccess 时,必须按顺序访问由 DataReader 返回的不同字段。例如,如果查询返回三个列,其中第三列是 BLOB,则必须在访问第三个字段中的 BLOB 数据之前返回第一个和第二个字段的值。如果在访问第一个或第二个字段之前访问第三个字段,则第一个和第二个字段值将不再可用。这是因为 SequentialAccess 已修改 DataReader,使其按顺序返回数据,当 DataReader 已经读取超过特定数据时,该数据将不可用。

当访问 BLOB 字段中的数据时,请使用 DataReader 的 GetBytes 类型化访问器,该访问器将使用二进制数据填充 byte 数组。您可以指定要返回的特定数据缓冲区大小以及从返回的数据中读取的第一个字节的起始位置。GetBytes 将返回 long 值,它表示所返回的字节数。如果向 GetBytes 传递空的 byte 数组,所返回的长值将是 BLOB 中字节的总数。您可以选择将字节数组中的某索引指定为所读取数据的起始位置。

以下示例从 Microsoft SQL Server 中的 pubs 示例数据库中返回发行者 ID 和徽标。发行者 ID (pub_id) 是字符字段,而徽标则是图形,即 BLOB。请注意,由于必须按顺序访问字段,所以将在访问徽标之前访问当前数据行的发行者 ID。

[Visual Basic]
Dim pubsConn As SqlConnection = New SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=pubs;")
Dim logoCMD As SqlCommand = New SqlCommand("SELECT pub_id, logo FROM pub_info", pubsConn)

Dim fs As FileStream ' Writes the BLOB to a file (*.bmp).
Dim bw As BinaryWriter ' Streams the binary data to the FileStream object.

Dim bufferSize As Integer = 100 ' The size of the BLOB buffer.
Dim outbyte(bufferSize - 1) As Byte ' The BLOB byte() buffer to be filled by GetBytes.
Dim retval As Long ' The bytes returned from GetBytes.
Dim startIndex As Long = 0 ' The starting position in the BLOB output.

Dim pub_id As String = "" ' The publisher id to use in the file name.

' Open the connection and read data into the DataReader.
pubsConn.Open()
Dim myReader As SqlDataReader = logoCMD.ExecuteReader(CommandBehavior.SequentialAccess)

Do While myReader.Read()
' Get the publisher id, which must occur before getting the logo.
pub_id = myReader.GetString(0)

' Create a file to hold the output.
fs = New FileStream("logo" & pub_id & ".bmp", FileMode.OpenOrCreate, FileAccess.Write)
bw = New BinaryWriter(fs)

' Reset the starting byte for a new BLOB.
startIndex = 0

' Read bytes into outbyte() and retain the number of bytes returned.
retval = myReader.GetBytes(1, startIndex, outbyte, 0, bufferSize)

' Continue reading and writing while there are bytes beyond the size of the buffer.
Do While retval = bufferSize
bw.Write(outbyte)
bw.Flush()

' Reposition the start index to the end of the last buffer and fill the buffer.
startIndex = startIndex + bufferSize
retval = myReader.GetBytes(1, startIndex, outbyte, 0, bufferSize)
Loop

' Write the remaining buffer.
bw.Write(outbyte)
bw.Flush()

' Close the output file.
bw.Close()
fs.Close()
Loop

' Close the reader and the connection.
myReader.Close()
pubsConn.Close()
[C#]
SqlConnection pubsConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=pubs;");
SqlCommand logoCMD = new SqlCommand("SELECT pub_id, logo FROM pub_info", pubsConn);

FileStream fs; // Writes the BLOB to a file (*.bmp).
BinaryWriter bw; // Streams the BLOB to the FileStream object.

int bufferSize = 100; // Size of the BLOB buffer.
byte[] outbyte = new byte[bufferSize]; // The BLOB byte[] buffer to be filled by GetBytes.
long retval; // The bytes returned from GetBytes.
long startIndex = 0; // The starting position in the BLOB output.

string pub_id = ""; // The publisher id to use in the file name.

// Open the connection and read data into the DataReader.
pubsConn.Open();
SqlDataReader myReader = logoCMD.ExecuteReader(CommandBehavior.SequentialAccess);

while (myReader.Read())
{
// Get the publisher id, which must occur before getting the logo.
pub_id = myReader.GetString(0);

// Create a file to hold the output.
fs = new FileStream("logo" + pub_id + ".bmp", FileMode.OpenOrCreate, FileAccess.Write);
bw = new BinaryWriter(fs);

// Reset the starting byte for the new BLOB.
startIndex = 0;

// Read the bytes into outbyte[] and retain the number of bytes returned.
retval = myReader.GetBytes(1, startIndex, outbyte, 0, bufferSize);

// Continue reading and writing while there are bytes beyond the size of the buffer.
while (retval == bufferSize)
{
bw.Write(outbyte);
bw.Flush();

// Reposition the start index to the end of the last buffer and fill the buffer.
startIndex+= bufferSize;
retval = myReader.GetBytes(1, startIndex, outbyte, 0, bufferSize);
}

// Write the remaining buffer.
bw.Write(outbyte);
bw.Flush();

// Close the output file.
bw.Close();
fs.Close();
}

// Close the reader and the connection.
myReader.Close();
pubsConn.Close();
SKYWIND6521 2002-05-22
  • 打赏
  • 举报
回复
漏了一点要求,就是根据某个字段的值为条件的,而且这个字段里不只一条信息是这个值的,但我现在只要其中的一个值.

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧