本人需要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