2016-05-21 18 views
0

Ich habe Microsoft SQL Server 2014 Express installiert, und ich bin am lernen, wie man ASP.NET mit Visual Studio Express 2015 für das Web verwendet, um Daten von einem Tierarzt abrufen Datenbank mit der Bezeichnung vetDatabase_Wizard.ASP.NET: Ich habe Probleme beim Ausführen eines SQL-Skripts

Als Anfang, ich bin ein protocolID aus einer eingegebenen ID abrufen und speichern Sie die Informationen in einer Klasse namens clinicalCase. Ich bin 100% neu in SQL.

Hier ist mein SQLQuery1.sql Skript (Versuch):

Select * from tblCases 

CREATE PROCEDURE spGetCaseByID 
    @ID int 
BEGIN 
    SELECT caseID, protocolID 
    FROM tblCases 
    WHERE caseID = @ID 
END 

Hier ist meine getCaseByID Funktion meine SQL-Skript aufrufen:

[WebMethod] 
public clinicalCase getCaseByID(int ID) 
{ 
    // Retrieve connection string 
    string cs = ConfigurationManager.ConnectionStrings["vetDatabase_Wizard"].ConnectionString; 

    using (SqlConnection con = new SqlConnection(cs)) 
    { 
     SqlCommand cmd = new SqlCommand("spGetCaseByID", con); 
     cmd.CommandType = CommandType.StoredProcedure; 

     SqlParameter parameter = new SqlParameter("@ID", ID); 
     cmd.Parameters.Add(parameter); 

     clinicalCase cases = new clinicalCase(); 

     con.Open(); 

     SqlDataReader reader = cmd.ExecuteReader(); 

     while (reader.Read()) 
     { 
      cases.ID = Convert.ToInt32(reader["ID"]); 
      cases.protocolID = Convert.ToInt32(reader["protocolID"]); 
     } 

     return cases; 
    } 
} 

Wenn ich die Funktion laufen und versuchen Sie es, erhalte ich die folgende Fehler bei

SqlDataReader reader = cmd.ExecuteReader(); 

Could not find the stored procedure "spGetCaseByID".

Ich vermute, es ist meine SQL-Syntax oder die Tatsache, dass ich eine Verbindungszeichenfolge in meiner web.config-Datei hinzugefügt, weil ich keine habe:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <connectionStrings> 
    <add name="vetDatabase_Wizard" 
     connectionString="Data Source=JOHNATHANBO431E\SQLEXPRESS2014;Initial Catalog=vetDatabase_Wizard;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 

    </connectionStrings> 

    <system.web> 
    <compilation debug="true" targetFramework="4.6.1"/> 
    <httpRuntime targetFramework="4.6.1"/> 
    <httpModules> 
     <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web"/> 
    </httpModules> 
    </system.web> 
    <system.codedom> 
    <compilers> 
     <compiler language="c#;cs;csharp" extension=".cs" 
     type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/> 
     <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" 
     type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/> 
    </compilers> 
    </system.codedom> 
    <system.webServer> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <modules> 
     <remove name="ApplicationInsightsWebTracking"/> 
     <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" 
     preCondition="managedHandler"/> 
    </modules> 

    </system.webServer> 
</configuration> 

ich den Namen und Connection bekam aus dem Fenster Eigenschaften von die Datenbank.

Ich würde das Feedback der Community sehr schätzen, da ich etwas Offensichtliches vermissen muss! Ich möchte Ihnen für Ihre Zeit sehr danken! :)

EDIT: Ich erkannte, dass ich zuerst mein SQL-Skript in SQL Server Management Studio ausführen muss, bevor Sie es in Visual Studio verwenden.

Allerdings bekomme ich folgende Fehlermeldung:

SQL80001: Incorrect syntax: 'CREATE PROCEDURE' must be the only statement in the batch. vetApp

Daher mein SQL-Skript ist falsch und würde schätzen Hilfe debuggen.

Antwort

0

Sie versuchen, mehrere Befehle in SQL auszuführen. Um gespeicherte Prozedur erstellen sollte es die erste Zeile des Codes oder go platzieren zwischen mehreren SQL-Befehl

Select * from tblCases 

GO

CREATE PROCEDURE spGetCaseByID 
    @ID int 
**AS** 
BEGIN 
    SELECT caseID, protocolID 
    FROM tblCases 
    WHERE caseID = @ID 
END 

Diese

+0

Vielen Dank für Ihre Hilfe! Es funktionierte! So einfach! : P Also "Go" wird es in zwei Befehle zerlegen, oder? – Johnathan

+0

Ja richtig, es wird zwei Befehle geben –

4

Ihr Code versucht, eine gespeicherte SQL Server-Prozedur namens spGetCaseByID auszuführen. Diese gespeicherte Prozedur ist in Ihrer Datenbank nicht vorhanden.

+2

Hallo Ian helfen! Danke für Ihre Rückmeldung! Ich habe gerade herausgefunden: Ich muss es zuerst ausführen, um gespeichert zu werden. Das Speichern der Datei wird nicht durchgeführt. – Johnathan

Verwandte Themen