问题描述
如何用ADO.NET访问SQLSEVER函数.代码是这样cm.CommandText="SELECT*FROMLogin(@name,@pwd)";cm.CommandType=CommandType.Text;cm.Parameters.AddWithValue("@name",criteria.Username);cm.Parameters.AddWithValue("@pwd",criteria.Password);
调用时提示对象名无效,Loing这一个标量值函数,是正常的.
解决方案
解决方案二:
C#中的SqlConnection对象SqlConnectioncon;con=newSqlConnection("SERVER=.;database=databasename;uid=sa;pwd=sa");databasename是要连接的数据库名称uid是数据库用户名pwd是数据库密码
解决方案三:
这个倒是没有遇上过.不过楼主可以采用把sqlserver函数写在存储过程当中然后在程序中通过执行存储过程来执行函数调用.
解决方案四:
刚才试了一下,是可以访问sql函数的楼主可以看一下CREATEfunctionchange_date(@date_strsmalldatetime)returnschar(14)begindeclare@date_str_parachar(14)set@date_str_para=cast(year(@date_str)aschar(4))+'年'+cast(month(@date_str)aschar(2))+'月'+cast(day(@date_str)aschar(2))+'日'return@date_str_paraend
SqlConnectionconn=newSqlConnection(ConfigurationManager.ConnectionStrings["Test"].ConnectionString);conn.Open();SqlCommandmyCommand=newSqlCommand("selectdbo.change_date('2005-12-01')as'日期格式'",conn);stringresults=myCommand.ExecuteScalar().ToString();Response.Write(results);conn.Close();
楼主所报的错,有可能是因为,执行调用函数的方式出错了.sqlserver函数调用在可使用标量表达式的位置可唤醒调用标量值函数,包括计算列和CHECK约束定义。当唤醒调用标量值函数时,至少应使用函数的两部分名称。[database_name.]owner_name.function_name([argument_expr][,...])楼主要执行函数时没有指定其所有者.默认的为dbo楼主可以试试cm.CommandText="SELECT*FROMLogin(@name,@pwd)";改为cm.CommandText="SELECT*FROMdbo.Login(@name,@pwd)";
解决方案五:
关注
解决方案六:
up