为什么不存在SQL存储过程解析图像路径字符串?

时间:2015-01-20 23:27:56

标签: asp.net sql-server stored-procedures

我正在为Doodle Creatures创建一个作弊/粉丝页面。我已经使页面工作,但我使用内联SQL而不是存储过程。我已经尝试制作我的Select语句存储过程,但图像信息没有被正确解析。

以下是使用存储过程的SQL数据源:

<asp:SqlDataSource ID="SQL_CreatureCombos" runat="server" 
     ConnectionString='<%$ ConnectionStrings:KJAI_DBConnectionString %>' 
     SelectCommand="SelectCreatureCombos"
     SelectCommandType="StoredProcedure">
</asp:SqlDataSource>

Creature Combos data source using a stored procedure.

这是我现在的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>

这是我的动物和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修复了问题;我不应该刷新我的数据主义者。它用标签替换了我的图像控件。

My page, working with inline SQL.

1 个答案:

答案 0 :(得分:0)

我错了;我将所有内联SQL放入存储过程中,页面完美运行!我认为我的datalist刷新了自己并创建了标签,当我第一次封装我的SQL代码并调用其存储过程时应该有图像。我的错。 : - )