21. juni 2007 - 18:53
Der er
9 kommentarer og 2 løsninger
Konstruktion+kald af stored procedure
Hvordan laves en stored procedure i VS2005, og hvordan kaldes den bagefter? Kaldet (/sql'en) skal være: "udtræk alle rows med id=1" f.eks.. Jeg bruger SQL Server og c#....
Annonceindlæg fra Thinkwise
Uden VS er det: CREATE PROCEDURE myproc AS SELECT * FROM dintabel WHERE id = 1 GO
Skal den slutte med "GO" ? Defaultproceduren i VS2005 er denne: CREATE PROCEDURE dbo.StoredProcedure1 /* ( @parameter1 int = 5, @parameter2 datatype OUTPUT ) */ AS SELECT * /* SET NOCOUNT ON */ RETURN Og den var jeg nemlig ikke helt sikker på. Men overordnet ligner den jo godt nok dit givne eksempel.
Det skal den hvis man opretter den i OSQL. Det virker sikker uden i VS.
Nu har jeg lavet en stored procedure, som ser således ud: CREATE PROCEDURE dbo.StoredProcedure1 //før stod der ALTER PRO... AS SELECT * FROM Persons WHERE Position='Arbejder' RETURN og jeg kalder den således: <table> <tr> <td> SQL-kald: <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" EmptyDataText="There are no data records to display."> <Columns> <asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" /> <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" /> <asp:BoundField DataField="Position" HeaderText="Position" SortExpression="Position" /> </Columns> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Database1ConnectionString1 %>" ProviderName="<%$ ConnectionStrings:Database1ConnectionString1.ProviderName %>" SelectCommand="SELECT [Id], [Name], [Position] FROM [Persons]"></asp:SqlDataSource> </td> <td style="width: 142px"> StoredProcedure-kald:<br /> <asp:SqlDataSource ID="SqlDataSource2" runat="server" SelectCommandType="StoredProcedure" SelectCommand="StoredProcedure1"></asp:SqlDataSource> <asp:GridView ID="GridView2" runat="server" DataSourceID="SqlDataSource2"> </asp:GridView> </td> </tr> </table> Men der sker intet ved kørsel. Den vil godt kompileres, men ved kørsel er siden bare blank ???
der er mismatch i DataSorceID på gridView'en og din SqlDataSource du har 2 gridview's den første har collonner det har den anden ikke og det erden anden som er bundet til din sqlDataSource
Nu har jeg lavet denne stored procedure: ALTER PROCEDURE dbo.StoredProcedure1 AS SELECT * FROM Persons WHERE Position='Arbejder' RETURN Og hvis jeg vælger Execute ved højreklik, så returneres det ønskede i outputvinduet. Når jeg så forsøger at kalde proceduren gennem en aspx-side, så bliver vinduet blot blankt. Koden er her: <%@ Page Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="StoredProcedureCall.aspx.cs" Inherits="OpsamlingWeb.StoredProcedures.WebForm1" Title="Untitled Page" %> <asp:Content ID="Content1" ContentPlaceHolderID="Toolbar" runat="server"> <asp:SqlDataSource ID="SqlDataSource4" runat="server" SelectCommandType="StoredProcedure" SelectCommand="StoredProcedure1"></asp:SqlDataSource> <asp:GridView ID="GridView2" runat="server" DataSourceID="SqlDataSource4"> </asp:GridView> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="Body" runat="server"> </asp:Content> Hvorfor virker det ikke?
Nu har jeg fået det til at vrke. Jeg skulle åbenbart vælge en Express-connection inde i SQL-datasourcen. Jeg syntes, at den så lidt forkert ud, da den hed noget med "express". Men den gjorde tricket.
Ja, nu efter jeg har lavet en masse research på nettet, har jeg jo så efterhånden fået nogle eksempler til at virke. Men jeg har jo ikke fået den store hjælp til det oprindelige spørgsmål herinde. Men den der trods alt er kommet tættest på noget, er Arne_v. Og da jeg har set, at jeg er blevet angivet som dårlig pointgiver, må jeg jo hellere lige være sikker, før jeg lukker spørgsmålet. Arne_v : hvis du gerne vil have pointene, så får du dem?
01. juli 2007 - 02:42
#10
Du kan vel give mig halvdelen for SP oprettelses problematikken.
17. juli 2007 - 12:39
#11
Here goes then...
Kurser inden for grundlæggende programmering