如何从Windows窗体应用程序中获取存储过程的结果值? [英] How to get value of result from stored procedure in Windows Form Application?
本文介绍了如何从Windows窗体应用程序中获取存储过程的结果值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
SQL StoredProcedure
SQL StoredProcedure
CREATE PROCEDURE sp_AddAdmins
@AId VARCHAR(30),
@AEmail VARCHAR(50),
@AName VARCHAR(50),
@APassword VARCHAR(15),
@AMobile VARCHAR(15)
AS
BEGIN
IF EXISTS(SELECT AID,AEmail FROM Admins WHERE AID=@AId OR AEmail=@AEmail)
BEGIN
SELECT 2 AS result
END
ELSE
BEGIN
INSERT INTO Admins(AId,AEmail,AName,APassword,AMobile)
VALUES(@AId,@AEmail,@AName,@APassword,@AMobile)
END
END
DataAccess
DataAccess
public int ExecuteNonQuery(string query, CommandType cmdType, SqlParameter[] parms = null)
{
int result = 0;
using (SqlConnection conn = new SqlConnection(connectionString))
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = query;
cmd.CommandType = cmdType;
if (parms != null)
{
cmd.Parameters.AddRange(parms);
}
try
{
conn.Open();
result = cmd.ExecuteNonQuery();
}
catch
{
throw;
}
}
}
return result;
}
public DataTable ExecuteQuery(string query, CommandType cmdType, SqlParameter[] parms = null)
{
DataTable dt = new DataTable();
SqlDataAdapter da;
using (SqlConnection conn = new SqlConnection(connectionString))
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = query;
cmd.CommandType = cmdType;
if (parms != null)
{
cmd.Parameters.AddRange(parms);
}
try
{
da = new SqlDataAdapter(cmd);
conn.Open();
da.Fill(dt);
}
catch
{
throw;
}
}
}
return dt;
}
}
Windows中的课程表格申请
class in Windows Form Application
<pre lang="cs">public int AddAdmins(Admins adm)
{
int result = 0;
DataAccess da= new DataAccess();
string query = "sp_AddAdmins";
SqlParameter[] param = new SqlParameter[5];
param[0]=new SqlParameter("@AId",SqlDbType.VarChar);
param[0].Value = adm.AId;
param[1] = new SqlParameter("@AEmail", SqlDbType.VarChar);
param[1].Value = adm.AEmail;
param[2] = new SqlParameter("@AName", SqlDbType.VarChar);
param[2].Value = adm.AName;
param[3] = new SqlParameter("@APassword", SqlDbType.VarChar);
param[3].Value = adm.APassword;
param[4] = new SqlParameter("@AMobile", SqlDbType.VarChar);
param[4].Value = adm.AMobile;
result=da.ExecuteNonQuery(query, CommandType.StoredProcedure, param);
return result;
}
按钮背后的代码
Code Behind Button
<pre lang="cs">private void button1_Click(object sender, EventArgs e)
{
int result = 0;
Admins adm = new Admins();
adm.AId = textBox1.Text.Trim();
adm.AEmail = textBox2.Text.Trim();
adm.AName = textBox3.Text.Trim();
adm.APassword = textBox4.Text.Trim();
adm.AMobile = textBox5.Text.Trim();
result = adm.AddAdmins(adm);
if (result == 1)
MessageBox.Show("Admin Added Successfully");
else if (result == 2)
MessageBox.Show("Admin Added Successfully");
else
MessageBox.Show("Admin Not Added Successfully");
}
推荐答案
您的SP仅返回1个案例中的结果,因此您需要修改它。
要从SQL获取返回结果,请调用ExecuteReader(),然后使用DataReader读取结果。或者只是调用.ExecuteScalar(),它返回第一列,第一行,无论结果如何。
Your SP only returns a result in 1 case so you'll want to modify that.
To get return results from SQL either call ExecuteReader() and then use a DataReader to read through the results. Or just call .ExecuteScalar() which returns the first column, first row, no matter what the results are.
这篇关于如何从Windows窗体应用程序中获取存储过程的结果值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文