【发布时间】:2015-01-20 23:27:56
【问题描述】:
我正在为Doodle Creatures 创建一个作弊/粉丝页面。我已经让页面工作了,但我使用的是内联 SQL 而不是存储过程。我尝试将我的 Select 语句设置为存储过程,但图像信息没有得到正确解析。
这是我使用存储过程的 SQL 数据源:
<asp:SqlDataSource ID="SQL_CreatureCombos" runat="server"
ConnectionString='<%$ ConnectionStrings:KJAI_DBConnectionString %>'
SelectCommand="SelectCreatureCombos"
SelectCommandType="StoredProcedure">
</asp:SqlDataSource>
这是我现在的 aspx 页面:
<asp:SqlDataSource ID="SQL_CreatureCombos" runat="server"
ConnectionString='<%$ ConnectionStrings:KJAI_DBConnectionString %>'
SelectCommand="SELECT [Animal1].[AnimalImage] AS AnimalImage1, [Animal2].[AnimalImage] AS AnimalImage2, [Animal1].[AnimalImageAltText] AS AltText1, [Animal2].[AnimalImageAltText] AS AltText2, [Animal1].[AnimalImageToolTip] AS ToolTip1, [Animal2].[AnimalImageToolTip] AS ToolTip2,
[Genes].[GeneImg], [Genes].[GeneAltText], [Genes].[GeneToolTip] FROM [CreatureCombos]
INNER JOIN [Animals] AS Animal1
ON [CreatureCombos].[NewCreatureID] = Animal1.[AnimalId]
INNER JOIN [Animals] AS Animal2
ON [CreatureCombos].[ComboAnimalID] = Animal2 .[AnimalId]
INNER JOIN [Genes] ON [CreatureCombos].[ComboGeneID] = [Genes].[GeneId]
ORDER BY AltText2;">
</asp:SqlDataSource>
<asp:DataList ID="DL_CreatureCombos" runat="server"
EnableViewState="false" DataSourceID="SQL_CreatureCombos"
RepeatColumns="6" RepeatDirection="Horizontal">
<ItemTemplate>
<asp:Image ID="IMG_ComboAnimal" runat="server"
ImageUrl='<%# Bind("AnimalImage2")%>'
AlternateText='<%# Bind("AltText2")%>'
ToolTip='<%# Bind("ToolTip2")%>' Width="25%" />+
<asp:Image ID="IMG_ComboGene" runat="server"
ImageUrl='<%# Bind("GeneImg")%>'
AlternateText='<%# Bind("GeneAltText")%>'
ToolTip='<%# Bind("GeneToolTip")%>' Width="25%" />=
<asp:Image ID="IMG_NewAnimal" runat="server"
ImageUrl='<%# Bind("AnimalImage1")%>'
AlternateText='<%# Bind("AltText1")%>'
ToolTip='<%# Bind("ToolTip1")%>' Width="25%" />
</ItemTemplate>
</asp:DataList>
这是我的 Animals 和 CreatureCombos 表:
CREATE TABLE [dbo].[Animals]
(
[AnimalId] INT IDENTITY (1, 1) NOT NULL,
[Animal] VARCHAR (30) NOT NULL,
[GroupID] INT NOT NULL,
[AnimalImage] VARCHAR (MAX) NOT NULL,
[AnimalImageAltText] VARCHAR (50) NULL,
[AnimalImageToolTip] VARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([AnimalId] ASC),
FOREIGN KEY ([GroupID]) REFERENCES [dbo].[Groups] ([GroupId])
);
我使用VARCHAR(MAX) 是因为我在某处读到微软将在不久的将来摆脱Image 数据类型。我想确保在新的 SQL Server 版本发布时我的数据不会被更改..
CREATE TABLE [dbo].[CreatureCombos]
(
[CreatureId] INT IDENTITY (1, 1) NOT NULL,
[NewCreatureID] INT NOT NULL,
[ComboAnimalID] INT NOT NULL,
[ComboGeneID] INT NOT NULL,
PRIMARY KEY CLUSTERED ([CreatureId] ASC),
FOREIGN KEY ([ComboGeneID]) REFERENCES [dbo].[Genes] ([GeneId]),
FOREIGN KEY ([ComboAnimalID]) REFERENCES [dbo].[Animals] ([AnimalId]),
FOREIGN KEY ([NewCreatureID]) REFERENCES [dbo].[Animals] ([AnimalId])
);
任何帮助将不胜感激!我不敢相信它不再起作用了!! :-(
编辑:我修复了内部 SQL 的问题;我不应该刷新我的数据列表。它用标签替换了我的图像控件。
【问题讨论】:
-
您是否将图像数据存储在 AnimalImage 中并将该数据显示回浏览器?您能否也发布 ASPX 页面?
-
AnimalImage中究竟存储了什么?您的网络服务器上图像的路径?是的,我们确实需要了解您如何将数据源绑定到页面控件。 -
AnimalImage存储图像的位置。例如,我的Rhino记录的图像将是~/Images/Doodle Creatures/Animals/Big Animals/Rhino.png -
"图像信息没有被正确解析"。这什么也没告诉我们。图片信息到底是什么,怎么解析不正确?
-
是的,
Image已被弃用 - 但它应该被“替换”为VARBINARY(MAX)(一个 binary 数据类型) - 而不是VARCHAR(MAX)(一个 string 数据类型)
标签: asp.net sql-server stored-procedures