如何从Windows窗体应用程序中获取存储过程的结果值? [英] How to get value of result from stored procedure in Windows Form Application?

查看:62
本文介绍了如何从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆