2011-09-07 55 views
0

我对.net和所有Microsoft开发人员技术都很陌生。我正在做一个CLR项目。我只想存储一个字符串,并且它是散列在数据库(MS SQL Server)中的。我在VS 2010中创建了一个存储过程。当我运行测试SQL脚本时,它说“无法找到存储过程”。 代码如下: 存储过程.net CLR项目说“找不到存储过程”

using System; 
using System.Data; 
using System.Data.SqlClient; 
using System.Data.SqlTypes; 
using Microsoft.SqlServer.Server; 


public partial class StoredProcedures 
{ 
    [Microsoft.SqlServer.Server.SqlProcedure] 
    public static void CDA_hashSProc() 
    { 
     using (SqlConnection connection = new SqlConnection("context connection=true")) 
     { 
      connection.Open(); 
      SqlCommand cmd = new SqlCommand("CDA_HashTest", connection); 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.Parameters.Add("@data", SqlDbType.VarChar, 4000); 
      cmd.Parameters["@data"].Value = "Hello"; 
      cmd.Parameters.Add("@hashdata", SqlDbType.VarChar, 4000); 
      Security.Hash hash = new Security.Hash(); 
      cmd.Parameters["@hashdata"].Value = (SqlString)hash.shaHash("Hello World"); 
      SqlDataReader dr = cmd.ExecuteReader(); 
      dr.Close(); 
     } 
    } 

}; 

USE [NWebED] 
GO 
/****** Object: StoredProcedure [dbo].[CDA_HashTest] Script Date: 09/07/2011 11:36:36 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
-- ============================================= 
-- Author:  <Author,,Name> 
-- Create date: <Create Date,,> 
-- Description: <Description,,> 
-- ============================================= 
ALTER PROCEDURE [dbo].[CDA_HashTest] 
    -- Add the parameters for the stored procedure here 
    @data varchar(max), 
    @hashdata varchar(max) 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 
    -- Insert statements for procedure here 
    insert into CDA_Encryption_Test (CDA_Document, CDA_Hash) values (@data, @hashdata) 
END 

错误: 未能找到存储过程 'dbo.CDA_hashSProc'。

请帮忙。

非常感谢

Varun的

+0

Harry从代码中不清楚,你执行了什么以及什么抱怨dbo.CDA_hashSProc没有存在吗?你的存储:[dbo]。[CDA_HashTest]不会调用dbo.CDA_hashSProc,因为我可以看到,无论如何你注册程序集和存储的dbo.CDA_hashSProc与特定的命令,如CREATE ASSEMBLY等?你能向我们展示这些命令吗? –

+0

作为一个方面说明,你自己帮忙,并停止直接使用ADO.NET(创建新的SqlConnection,SqlCommand等),你泄露资源和连接到处,这是一个库,你可以很快实现而不用更改你的代码太多http://abstractsql.codeplex.com同时摆脱所有这些问题 – BlackTigerX

+0

你确定DBO是老板吗? –

回答

0

典型地,这错误是由在存储过程名键入错误引起的。错误:无法找到存储过程'dbo.CDA_hashSProc'。我怀疑你实际上wrtten这是你的,你打开你的连接,下面一行:

SqlCommand cmd = new SqlCommand("CDA_hashSProc", connection);