我創建了一個存儲過程dbo.test如下什麼是錯在我的代碼來調用存儲過程
use sample
go
create procedure dbo.test as
DECLARE @command as varchar(1000), @i int
SET @i = 0
WHILE @i < 5
BEGIN
Print 'I VALUE ' +CONVERT(varchar(20),@i)
SET @i = @i + 1
END
現在我創建一個C#控制檯應用程序來調用存儲過程如下
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace AutomationApp
{
class Program
{
public void RunStoredProc()
{
SqlConnection conn = null;
SqlDataReader rdr = null;
try
{
conn = new SqlConnection("Server=(TEST\\SQL2K5EXPRESS);DataBase=sample,IntegratedSecurity=SSPI");
conn.Open();
SqlCommand cmd = new SqlCommand("sample.dbo.test", conn);
cmd.CommandType = CommandType.StoredProcedure;
//cmd.ExecuteNonQuery();
rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Console.WriteLine(String.Format("{0}, {1}",
rdr[0], rdr[1]));
}
}
catch(Exception ex)
{
Console.writeLine(ex.message);
}
finally
{
if (conn != null)
{
conn.Close();
}
if (rdr != null)
{
rdr.Close();
}
}
}
static void Main(string[] args)
{
Console.WriteLine("Hello World");
Program p= new Program();
p.RunStoredProc();
Console.Read();
}
}
}
O/P:
Hello World
//Could not find stored procedure 'test'.
A network-related or instance-specific error occurred while establishing a conne
ction到SQL Server。服務器未找到或無法訪問。驗證 實例名稱是否正確,並且SQL Server已配置爲允許遠程連接 。 (提供者:SQL網絡接口,錯誤:26 - 錯誤定位即成 R /例如指定)
但是,當我嘗試運行,將關閉以便程序我調試的程序,然後在正好在的ExecuteReader()方法,它是顯示無法找到存儲過程「dbo.test」 當我在SSMS上給出「EXEC dbo.test」時,它顯示結果如我所料。
與這個任何幫助whngt大受讚賞。
@command是否爲空? – VVS 2009-08-12 10:36:27
當您在另一個數據庫中創建過程並更改連接字符串以連接到該數據庫並執行該過程時會發生什麼? – Kirtan 2009-08-12 10:36:47
另請檢查已創建過程的數據庫服務器實例。它是真的(本地)還是(本地\ SQLExpress)或其他什麼? – Kirtan 2009-08-12 10:38:32