C# Can';无法找到存储过程
当我试图更新我的表的数据时,我得到了一个错误 找不到存储过程 怎么了 SQL:C# Can';无法找到存储过程,c#,sql,sql-server,C#,Sql,Sql Server,当我试图更新我的表的数据时,我得到了一个错误 找不到存储过程 怎么了 SQL: CREATE PROCEDURE GetContactName @Name char(20), @SecondName char(20) output as SELECT @SecondName = [Second Name] FROM WPF.dbo.contacts WHERE Name = @Name sqlConnection.Open(); SqlCommand cmd
CREATE PROCEDURE GetContactName
@Name char(20),
@SecondName char(20) output
as
SELECT @SecondName = [Second Name]
FROM WPF.dbo.contacts
WHERE Name = @Name
sqlConnection.Open();
SqlCommand cmd = new SqlCommand("GetContactName", sqlConnection);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter param = new SqlParameter();
param.ParameterName = "@Name";
param.SqlDbType = SqlDbType.Char;
param.Direction = ParameterDirection.Input;
cmd.Parameters.Add(param);
param = new SqlParameter();
param.ParameterName = "@SecondName";
param.SqlDbType = SqlDbType.Char;
param.Size = 20;
param.Direction = ParameterDirection.Output;
cmd.Parameters.Add(param);
cmd.ExecuteNonQuery();
sqlConnection.Close();
C#:
CREATE PROCEDURE GetContactName
@Name char(20),
@SecondName char(20) output
as
SELECT @SecondName = [Second Name]
FROM WPF.dbo.contacts
WHERE Name = @Name
sqlConnection.Open();
SqlCommand cmd = new SqlCommand("GetContactName", sqlConnection);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter param = new SqlParameter();
param.ParameterName = "@Name";
param.SqlDbType = SqlDbType.Char;
param.Direction = ParameterDirection.Input;
cmd.Parameters.Add(param);
param = new SqlParameter();
param.ParameterName = "@SecondName";
param.SqlDbType = SqlDbType.Char;
param.Size = 20;
param.Direction = ParameterDirection.Output;
cmd.Parameters.Add(param);
cmd.ExecuteNonQuery();
sqlConnection.Close();
Edit1
我正在使用VS13和SQLServer2008ManagementStudio
我找不到存储过程,但当我执行SQL代码时,它会说该过程已经存在
连接字符串:
Data Source=HOME;Initial Catalog=WPF;Integrated Security=True
- 数据库:
WPF
- 架构:
dbo.contacts
**USE YourdataBaseName
Go**
CREATE PROCEDURE GetContactName
@Name char(20),
@SecondName char(20) output
as
SELECT @SecondName = [Second Name]
FROM WPF.dbo.contacts
WHERE Name = @Name
C#:
您是否能够在Sql资源管理器中查看数据库并查看存储过程是否存在?您的应用程序是否具有查看存储过程的权限?您的应用程序是否指向正确的数据库/正确的凭据?能否显示您的连接字符串?另外:您在哪个数据库和架构中创建了存储过程?您能确认您的凭据有权访问存储过程吗?您可以尝试删除存储过程并将其重新添加到测试中。您是否尝试通过代码或MSSQL中的查询编辑器创建存储过程?是。”“已存在”发生,因为您正在使用创建过程(而不是ALTER过程)。现在不用担心。您需要在SSMS中打开对象浏览器,查看SP所在的架构。它不是这样工作的。问题一定是别的。可能进程是在另一个数据库中创建的。不,我只有一个非系统数据库-WPF。没有用于过程的文件夹。此文件夹仅列出已定义的所有过程。如果你的进程没有出现在那里,它就不存在。不管什么原因。也许它进了主人的房间?为什么用数据库名(WPF.dbo.contacts)限定表名?没有它就不行,对吧?因为它进入了错误的数据库。我有四个系统数据库:master、model、msdb、tempdb。那里没有存储过程。但是是的,没有DB名称它就不能工作。我不知道。。它正在工作,我很高兴=)