zoukankan      html  css  js  c++  java
  • ADO调用存储过程

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Configuration;
    using System.Data.SqlClient;
     
    namespace _01ado.net调用存储过程
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                string uid = txtUid.Text.Trim();
                string pwd = txtPwd.Text;
     
                //usp_login
                string constr = ConfigurationManager.ConnectionStrings["sql"].ConnectionString;
                using (SqlConnection con = new SqlConnection(constr))
                {
                    //本来应该写sql语句,现在变成了存储过程的名称
                    string sp_name = "usp_login";
                    using (SqlCommand cmd = new SqlCommand(sp_name, con))
                    {
                        //由于存储过程有参数,所以这里也得为command对象增加参数
                        //如果要调用存储过程没有参数,则这里不需要为command对象增加参数
                        SqlParameter[] pms = new SqlParameter[] { 
                        new SqlParameter("@uid",uid),
                        new SqlParameter("@pwd",pwd),
                        new SqlParameter("@result",SqlDbType.Bit)
                        };
     
                        //设置第三个参数是一个output参数
                        pms[2].Direction = ParameterDirection.Output;
     
                        //把参数加进来
                        cmd.Parameters.AddRange(pms);
     
                        //执行存储过程与Sql语句的最大的区别需要设置一个CommandType
                        cmd.CommandType = CommandType.StoredProcedure;
     
                        //执行
                        con.Open();
     
                        #region ExecuteNonQuery
                        //int r = cmd.ExecuteNonQuery();
                        //MessageBox.Show("执行完毕的返回值:" + r.ToString());
                        #endregion
     
     
                        #region ExecuteScalar
     
                        ////由于该存储过程执行完毕以后没有查询出任何的值,所以该方法返回值为null
                        //object obj = cmd.ExecuteScalar();
                        ////MessageBox.Show(obj.ToString());
     
                        #endregion
     
                        #region ExecuteReader
     
                        //using (SqlDataReader reader = cmd.ExecuteReader())
                        //{
     
                        //}
                        //调用执行返回Reader的方法,因为这里不需要得到返回值,所以也不接受返回的DataReader
                        cmd.ExecuteReader();
     
                        #endregion
     
     
     
                        //这里要判断用户登录是否成功,关心的是执行完存储过程以后
                        //的输出参数
                        //获取输出参数,必须等到sql语句执行完毕
                        bool b = Convert.ToBoolean(pms[2].Value);
                        if (b)
                        {
                            MessageBox.Show("登录成功!~");
                        }
                        else
                        {
                            MessageBox.Show("登录失败!");
                        }
     
                        //对于这里的验证登录的存储过程,由于该存储过程执行完毕以后不返回任何的数据,是否登录成功是根据输出参数来决定的,所以这里调用存储过程的哪个方法都可以执行。
     
                    }
                }
            }
        }
    }
  • 相关阅读:
    谈谈Ext JS的组件——组件基类:Ext.Component
    谈谈Ext JS组件之引子
    安装Compass时不能访问服务器的问题
    Android 官方命令深入分析之Android Debug Bridge(adb)
    Android 官方命令深入分析
    Libgdx1.6.2发布,跨平台游戏开发框架
    Libgdx 1.6.1发布,跨平台游戏开发框架
    【翻译】Ext JS 6 Beta发布
    Springboot配置时间格式
    Thymeleaf在前台下拉列表获取后台传的值
  • 原文地址:https://www.cnblogs.com/jiayue360/p/3167996.html
Copyright © 2011-2022 走看看