2014-12-05 29 views
0

我工作的asp.net C#项目连接到SQL数据库(MySQL的2008)。这里是我的C#类:发送字符串参数存储过程

public static DataTable GetUnitByName(string unit) 
    { 
     Database db = DatabaseFactory.CreateDatabase(); 
     string sqlCommand = "GetUnitByName"; 
     DbCommand dbCommandWrapper = db.GetStoredProcCommand(sqlCommand); 
     db.AddInParameter(dbCommandWrapper, "@Unit", DbType.String, unit); 
     DataSet ds = db.ExecuteDataSet(dbCommandWrapper); 
     DataTable dt = ds.Tables[0]; 
     return dt; 
    } 

,这里是存储过程:

alter PROCEDURE [dbo].[GetUnitByName] 
(
@Unit nvarchar 
) 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON 
    DECLARE @Err int 
    -- Insert statements for procedure here 
select * from Unit where [email protected] 
    SET @Err = @@Error 

    RETURN @Err 
END 

我打电话过程像这样: DataTable unit1 = Unit.GetUnitByName(per100gText [1] enter code here); ,per10gText是一个字符串列表。 但它返回空数据表。连接到SQL服务器,在调试我看到该过程无法读取参数。 任何帮助请。如果你想PROC返回您首先需要将其声明为输出参数PARAM

回答

0

alter PROCEDURE [dbo].[GetUnitByName] 
(
@Unit nvarchar , @err int output 
) 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON 

    -- Insert statements for procedure here 
select * from Unit where [email protected] 
    SET @Err = @@Error 

    RETURN @Err 
END 
+0

我不使用SQL代码的时候,你能解释更多的功能?并直接使用SQL和C#返回值? – alim91 2014-12-05 08:53:24

+0

我不知道c# - :(阅读关于proc和func的这个:http://stackoverflow.com/questions/1179758/function-vs-stored-procedure-in-sql-server – 2014-12-05 08:58:58

+0

好的,谢谢你杜迪。 – alim91 2014-12-05 10:23:03