我正在使用 Visual Studios 2010 创建带有数据库的 ac# Web 应用程序。我的目标是让 default.aspx 调用 ac# 类,该类运行一个存储过程,从表中选择一个条目并返回它。这是代码:
'The stored procedure. I want it to send back the name it gets from doing
'the query to the c# class.
ALTER PROCEDURE getName (@id int)
AS
BEGIN
SET NOCOUNT ON;
--
SELECT name FROM tableA where id = @id;
END
Return
//Here's the c# class I'm using.
public class student
{
public string name;
public int id;
public student()
{ }
public String doQuery(int id)
{
SqlConnection conn = null;
try
{
conn = new SqlConnection("Server =(local); Database = Database1.mdf;
Integrated Security = SSPI");
conn.Open();
SqlCommand cmd = new SqlCommand("getName", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter param = new SqlParameter("@id", SqlDbType.Int);
param.Direction = ParameterDirection.Input;
param.Value = id;
cmd.Parameters.Add(param);
//This is some code from when I tryed return value
//SqlParameter reVal = cmd.Parameters.Add("@name", SqlDbType.VarChar);
//reVal.Direction = ParameterDirection.ReturnValue;
//before using ExecuteScalar I tried ExcuteNonQuery with the commented
//out code
name = (string)cmd.ExecuteScalar();
//name = (String)cmd.Parameters["@name"].Value;
conn.Close();
}
catch(Exception)
{}
return name;
}
}
运行我的程序不会返回错误,它根本不会在名称中放置任何值。我缺少什么将 sql 过程中选择的名称放入我的 c# 类中的 name 变量中。我希望我能清楚地表达我的问题。
编辑1:我没有在catch中放任何东西,因为还没有决定用什么来查看它是否出错。当尝试失败时,我将其更改为 make name = "error",这就是我得到的,这就是我得到的。我还尝试在 sql server 管理中运行“exec getName 5, others”。我有点不清楚在运行 exec getName 时使用什么作为第二个参数,因为第二个参数假设只是输出,但似乎仍然需要运行它。它只是说命令执行成功,但不显示 id 5 的名称