本人需要C#调用存储过程,但是实在不清楚,也没看见设置数据表明,数据库是怎么知道要写入哪一个数据表中呢?
string strConnection = "user id=sa;password=sa;initial catalog=MyTest;Server=YHB;Connect Timeout=30";
using (SqlConnection conn = new SqlConnection(strConnection))
{
conn.Open();
using (SqlCommand sqlComm = conn.CreateCommand())
{
//设置要调用的存储过程的名称
sqlComm.CommandText = "GetPWD";
//指定SqlCommand对象传给数据库的是存储过程的名称而不是sql语句
sqlComm.CommandType = CommandType.StoredProcedure;
SqlParameter username = sqlComm.Parameters.Add(new SqlParameter("@username", SqlDbType.VarChar, 20));
//指明"@username"是输入参数
username.Direction = ParameterDirection.Input;
//为“@username”参数赋值
username.Value = this.txt_username.Text;
SqlParameter password = sqlComm.Parameters.Add(new SqlParameter("@password", SqlDbType.VarChar, 20));
//指定"@password"为输出参数
password.Direction = ParameterDirection.Output;
//执行
sqlComm.ExecuteNonQuery();
//得到输出参数的值,把赋值给name,注意,这里得到的是object类型的,要进行相应的类型轮换
string passwrod = Convert.ToString(sqlComm.Parameters["@password"].Value);
MessageBox.Show(passwrod);
}
}
解决方案
2
CREATE PROCEDURE ProGetPWD
@username varchar(20),
@password varchar(20) OUTPUT
AS
BEGIN
SELECT @password = password
FROM Users
WHERE username = @username
END
这不就是表名吗?
再说,这是查询,哪来的 写入哪一个数据表
@username varchar(20),
@password varchar(20) OUTPUT
AS
BEGIN
SELECT @password = password
FROM Users
WHERE username = @username
END
这不就是表名吗?
再说,这是查询,哪来的 写入哪一个数据表
30
表名在存储过程中, C# 代码中就不需要写了,也无法写
18
本人晕啊,意思理解错误啦,浪费啊~!
sp_depends
https://msdn.microsoft.com/zh-cn/library/ms189487(v=sql.110).aspx
sp_depends
https://msdn.microsoft.com/zh-cn/library/ms189487(v=sql.110).aspx