在线等待?请教有关StoreProcedure问题? 解决者给予500分

tcbo 2004-04-16 08:58:32


在编写asp.net application 中 我想用StoreProcedure来访问数据库并把结果用DataGrid显示出来。
比如:在Text文本框中输入用户ID:521
然后点击“Select”按钮,就会把用户的信息用DataGrid显示出来
应怎么做?

我想知道Text文本框中输入的“字符串”是怎么传递给StoreProcedure的并能把结果计算得出的?
...全文
44 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tcbo 2004-04-16
  • 打赏
  • 举报
回复
我真诚的向楼上的各位高手表示 感谢!

你们辛苦!
tcbo 2004-04-16
  • 打赏
  • 举报
回复
你的答复完全符合我要求!就是我想要的的
我回去试一试,若成功我会给您分说。

您有QQ 我想您,同样还有帮助我各位高手(回复我的帖子的人都可以)
我的QQ 是41246829

孤帆

一个对编程的知识急渴的 Freeman
smoothwood 2004-04-16
  • 打赏
  • 举报
回复
EN ...我们这样来作个简单的操作来理解这个问题
1、我们先再Northwind数据库中新建一个简单的存储过程test
代码如下:
CREATE PROCEDURE test
(
@ID int
)
as
Select CategoryName from Categories where CategoryID=@ID
GO
2、然后我们在页面中放上Textbox1,Button1,Datagrid1
然后在代码中首先引入import system.data.sqlclient
3、添加以下这段代码
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click, Button1.Click
Dim conn As New SqlConnection("server=localhost;user id=sa;password=xxx;database=Northwind;")
Dim cmd As New SqlCommand
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "test"
cmd.Connection = conn
cmd.Parameters.Add("@ID", TextBox1.Text)
Dim dtr As SqlDataReader
conn.Open()
dtr = cmd.ExecuteReader
DataGrid1.DataSource = dtr
DataGrid1.DataBind()
End Sub
______________________________________________________________________________
你想知道的焦点应该是:Text文本框中输入的“字符串”是怎么传递给StoreProcedure的并能把结果计算得出的。
程序是这么运作的:在代码中,我们新建了一个cmd对象变量,我们给它的parameters添加了一个@ID变量,并且这个参数的值为Textbox1.text【cmd.Parameters.Add("@ID", TextBox1.Text)】,并且指明了cmd的命令类型为存储过程【cmd.CommandType = CommandType.StoredProcedure】,而且存储过程的名字为test【cmd.CommandText = "test"】因此在执行的时候,它会到数据库中找到名为test的存储过程,并且找到这个存储过程中@ID这个参数,并且将程序中声明的@ID这个参数传给它(即把TextBox1.Text的值传给它),然后存储过程执行Select CategoryName from Categories where CategoryID=@ID,程序通过dtr = cmd.ExecuteReader把存储过程返回的结果读出来,并且作为数据源与Datagrid1绑定
tcbo 2004-04-16
  • 打赏
  • 举报
回复
但是 有错啊

”storeprocedure 需要参数,但没有提供“
icehawk 2004-04-16
  • 打赏
  • 举报
回复
1.写存储过程,如scocsdn(天天.Net)的
2.访问存储过程,如:
SqlCommand Cmd = new SqlCommand ("StoreProcedureName",conn);
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.Parameters.Add("@EmployeeID",TextBox.Text);
Cmd.ExecuteQuery();
brargil 2004-04-16
  • 打赏
  • 举报
回复
此外,还应该设定SqlParameter对象,用来接收所有的返回参数
方法类似,但应该显式声明参数方向:
SqlParameter sqlPara;
sqlPara = sqlComm.Parameters.Add("@EmployeeID",SqlDbType.NVarChar,50);
sqlPara.Direction = ParameterDirection.Output;
favornwpu 2004-04-16
  • 打赏
  • 举报
回复
怎么说呢?
可以写一个函数,两个参数,一个是文本内容,一个是存储过程中的参数名.再结合楼上几位的方法应该可以解决了.
gavintolee 2004-04-16
  • 打赏
  • 举报
回复
利用天天.NET的存储过程:加上这个应当就可以了。
public SqlDataReader GetEmployee(string EmployeeID)
{

// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand myCommand = new SqlCommand("EmployeeDetals", myConnection);

// Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure;


SqlParameter parameterEmployeeID = new SqlParameter("@DepartmentID", SqlDbType.Int, 4);
parameterEmployeeID.Value = EmployeeID ;
myCommand.Parameters.Add(parameterEmployeeID );

// Execute the command
myConnection.Open();
SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);

// Return the datareader result
return result;
}

你只要把DataGrid绑定到GetEmployee就可以了
ILoveProgramer 2004-04-16
  • 打赏
  • 举报
回复
using System.Data.SqlClient;


string id = txtId.text.trim();
SqlConnection sqlConn = new SqlConnection(connectionstring);
SqlCommand sqlComm = new SqlCommand();
sqlComm.CommandText = "GetInfo";
sqlComm.CommandType = CommandType.StoredProcedure;
sqlComm.Parameters.Clear();

SqlParameter sqlPara;
sqlPara = sqlComm.Parameters.Add("@p_id",SqlDbType.NVarChar,8);
sqlPara.Value = id;

DataGrid1.DataSource = sqlComm.ExecuteReader();
DataGrid1.DataBind();


代码是随手写的,看看对不对。
li_new 2004-04-16
  • 打赏
  • 举报
回复
如果是SqlServer数据库:
那么
SqlDataReader sqlDr;
SqlConnection sqlConn = new SqlConnection();
sqlConn.ConnectionString = "数据库连接";
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection =sqlConn;
sqlCmd.CommandText="Sql语句";
SqlParameterCollection sqlParams = sqlCmd.Parameters;
sqlParams.Add(new SqlParameter("这里是数据库字段名",System.Data.SqlDbType.Char))sqlCmd.Parameters["这里是数据库字段名"].Value = "页面上的ID";
sqlConn.Open();
sqlDr = sqlCmd.ExecuteQuery();
sqlConn.Close();
scocsdn 2004-04-16
  • 打赏
  • 举报
回复
StoreProcedure:

create procedure EmployeeDetals
(
@EmployeeID nvarchar(10),
@FullName nvarchar(50) output,
@Password nvarchar(50) output,
@Email nvarchar(50) output,
@Department nvarchar(50) output,
@BirthDate datetime output,
@HireDate datetime output,
@Phone nvarchar(50) output
)
as

select
@FullName=FullName,
@Password=Password,
@Email=Email,
@Department=Department,
@BirthDate=BirthDate,
@HireDate=HireDate,
@Phone=Phone
from
Employees
where
EmployeeID=@EmployeeID
GO

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧