2014-04-30 57 views
-1

我是非常新的存儲過程。今天,我第一次使用存儲過程。無效的對象名'dbo.Languages'

我有一個sql server中的表named- Languages。其中有字段 - ID,名稱,CreatedOn,CreatedBy,UpdatedOn,UpdatedBy,IsDelete

我做了一個存儲過程,但不知道如何在項目中使用它。

我的存儲過程是 -

USE [HRMS] 
GO 
/****** Object: StoredProcedure [dbo].[hrm_Add] Script Date: 04/30/2014 15:06:52 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER PROCEDURE [dbo].[hrm_Add] 
    -- Add the parameters for the stored procedure here 
    @Id int = 0, 
    @Name varchar(120), 
    @CreatedOn datetime, 
    @UpdatedOn datetime=0, 
    @CreatedBy bigint=0, 
    @UpdatedBy bigint=0, 
    @IsDeleted bit=0 
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 [dbo.Languages](Name, CreatedOn,UpdatedOn,CreatedBy,UpdatedBy,IsDeleted) VALUES(@Name,@CreatedOn,@UpdatedOn,@CreatedBy,@UpdatedBy,@IsDeleted) 
END 

我的項目代碼上點擊是 -

string strcon = ConfigurationManager.ConnectionStrings["Dbconnection"].ConnectionString; 
     SqlConnection sqlConnection = new SqlConnection(strcon); 

     SqlCommand command = new SqlCommand("hrm_Add", sqlConnection); 
     command.CommandType = CommandType.StoredProcedure; 
     command.Parameters.Add("@Name", SqlDbType.VarChar).Value = txtName.Text; 
     command.Parameters.Add("@CreatedOn", SqlDbType.DateTime).Value = DateTime.Now; 
     command.Parameters.Add("@UpdatedOn", SqlDbType.DateTime).Value = DateTime.Now; 
     command.Parameters.Add("@CreatedBy", SqlDbType.BigInt).Value = 1; 
     command.Parameters.Add("@UpdatedBy", SqlDbType.BigInt).Value = 1; 
     command.Parameters.Add("@IsDeleted", SqlDbType.Bit).Value = 0; 
     sqlConnection.Open(); 
     return command.ExecuteNonQuery(); 

我收到錯誤無效的對象名稱dbo.Languages「。

我該如何解決它。

請幫幫我。

+1

你檢查過的ConnectionString?也許你正在連接到另一臺服務器或數據庫。 –

+0

檢查連接字符串是否將發送到HRMS,並且實際的SP已針對該數據庫運行。 – PaulG

+0

是的,與錯誤的分貝連接..愚蠢的錯誤。 –

回答

3

根據評論中的建議,確保您首先連接到正確的數據庫。

然後,你將需要改變

[dbo.Languages] 

[dbo].[Languages] 

FYI:這樣做的原因是,SQL Server使用一個完全合格的名稱引用的對象,如

[server_name].[database_name].[schema_name].[object_name] 

通常,當您引用一個對象時,您不必指定服務器,數據庫和所有者。

在你的情況要指定所有者名稱爲DBO但語法不正確 - 你需要使用點符號,如

[schema_name].[object_name] 
+1

可能值得解釋爲什麼這是這種情況(對象名稱和模式等),會做出第一類答案然後=] – Sean