ASP.NET:我在尝试 运行 sql 脚本时遇到问题
ASP.NET: I am having troubles trying to run a sql script
我已经安装了 Microsoft SQL Server 2014 Express,我正在学习如何使用 ASP.NET 和 Visual Studio Express 2015 for Web 从名为 vetDatabase_Wizard
。
首先,我从输入的 ID 中检索 protocolID
,并将信息存储在名为 clinicalCase
的 class 中。我是 SQL.
的 100% 新手
这是我的 SQLQuery1.sql
脚本(尝试):
Select * from tblCases
CREATE PROCEDURE spGetCaseByID
@ID int
BEGIN
SELECT caseID, protocolID
FROM tblCases
WHERE caseID = @ID
END
这是调用我的 SQL 脚本的 getCaseByID
函数:
[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;
}
}
当我 运行 函数并尝试它时,我在
处收到以下错误
SqlDataReader reader = cmd.ExecuteReader();
Could not find the stored procedure "spGetCaseByID".
我怀疑这是我的 SQL 语法,或者我在 web.config 文件中添加了一个连接字符串,因为我没有:
<?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=\"Web\" /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>
我从数据库的属性面板中获取了名称和连接字符串。
非常感谢社区的反馈,因为我一定遗漏了一些明显的东西!非常感谢您抽出宝贵时间! :)
编辑:我意识到我需要先在 SQL Server Management Studio 中执行我的 SQL 脚本,然后再在 Visual Studio 中使用它。
但是,我收到以下错误:
SQL80001: Incorrect syntax: 'CREATE PROCEDURE' must be the only statement in the batch. vetApp
因此,我的 SQL 脚本是错误的,非常感谢调试帮助。
您的代码正在尝试 运行 一个名为 spGetCaseByID
的 SQL 服务器存储过程。
您的数据库中不存在此存储过程。
您正在尝试 运行 在 SQL
中执行多个命令。为了创建存储过程,它应该是第一行代码或将 go
放在多个 sql 命令
之间
Select * from tblCases
GO
CREATE PROCEDURE spGetCaseByID
@ID int
**AS**
BEGIN
SELECT caseID, protocolID
FROM tblCases
WHERE caseID = @ID
END
这会有所帮助
我已经安装了 Microsoft SQL Server 2014 Express,我正在学习如何使用 ASP.NET 和 Visual Studio Express 2015 for Web 从名为 vetDatabase_Wizard
。
首先,我从输入的 ID 中检索 protocolID
,并将信息存储在名为 clinicalCase
的 class 中。我是 SQL.
这是我的 SQLQuery1.sql
脚本(尝试):
Select * from tblCases
CREATE PROCEDURE spGetCaseByID
@ID int
BEGIN
SELECT caseID, protocolID
FROM tblCases
WHERE caseID = @ID
END
这是调用我的 SQL 脚本的 getCaseByID
函数:
[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;
}
}
当我 运行 函数并尝试它时,我在
处收到以下错误SqlDataReader reader = cmd.ExecuteReader();
Could not find the stored procedure "spGetCaseByID".
我怀疑这是我的 SQL 语法,或者我在 web.config 文件中添加了一个连接字符串,因为我没有:
<?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=\"Web\" /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>
我从数据库的属性面板中获取了名称和连接字符串。
非常感谢社区的反馈,因为我一定遗漏了一些明显的东西!非常感谢您抽出宝贵时间! :)
编辑:我意识到我需要先在 SQL Server Management Studio 中执行我的 SQL 脚本,然后再在 Visual Studio 中使用它。
但是,我收到以下错误:
SQL80001: Incorrect syntax: 'CREATE PROCEDURE' must be the only statement in the batch. vetApp
因此,我的 SQL 脚本是错误的,非常感谢调试帮助。
您的代码正在尝试 运行 一个名为 spGetCaseByID
的 SQL 服务器存储过程。
您的数据库中不存在此存储过程。
您正在尝试 运行 在 SQL
中执行多个命令。为了创建存储过程,它应该是第一行代码或将 go
放在多个 sql 命令
Select * from tblCases
GO
CREATE PROCEDURE spGetCaseByID
@ID int
**AS**
BEGIN
SELECT caseID, protocolID
FROM tblCases
WHERE caseID = @ID
END
这会有所帮助