简体   繁体   English

如何从C#中的存储过程获取结果

[英]How to get result from store procedure in C#

I am totally new to C#. 我是C#的新手。 I have created one small table that has 6 records. 我创建了一个有6条记录的小table I want to get those records using a store procedure . 我想使用store procedure获取这些记录。 Also, I have simple two forms. 另外,我有两种简单的形式。 One is the Main Form that user can type Student Id to get the result by click on the find button . 一种是Main Form ,用户可以通过click on the find button键入Student Id以获取结果。

GetStudentById GetStudentById

CREATE Procedure GetStudentById (@Id VARCHAR)
AS
BEGIN
    SELECT * FROM dbo.Students WHERE Id = @Id
END

I have tried to find a solution my own. 我试图找到自己的解决方案。 Because, I am learning this. 因为,我正在学习这个。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WinApp
{
    public partial class WinForm : Form
    {
        public WinForm()
        {
            InitializeComponent();
        }

        private void CloseBtn_Click(object sender, EventArgs e)
        {
            this.Close();
        }// End CloseBtn_Click

        private string getConnectionString()
        {
            string conStr = ConfigurationManager.ConnectionStrings["WinApp.Properties.Settings.WinPro_dbConnectionString"].ToString();
            return conStr;
        }

        private void FindBtn_Click(object sender, EventArgs e)
        {
            string SearchId = SearchInput.Text;

            SqlCommand cmd = null;
            using (SqlConnection con = new SqlConnection( getConnectionString() ))
            {
                try
                {
                    con.Open();
                    cmd = new SqlCommand();
                    cmd.Connection = con;
                    cmd.CommandType = CommandType.StoredProcedure;

                    cmd.CommandText = "GetStudentById";
                    cmd.Parameters.AddWithValue("@Id", SearchId);
                    cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    con.Close();
                    cmd = null;
                }
            }
        }// End FndBtn_Click
    }
}

Above code from my main form. 以上代码来自我的主要形式。 How can I get that result to an array and assign to my second viewform controls to edit the result ? 如何将结果保存到array并分配给second viewform controls to edit the result

    SqlCommand cmd = null;
    using (SqlConnection con = new SqlConnection( getConnectionString() ))
    {
        try
        {
            con.Open();
            cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.CommandText = "GetStudentById";
            cmd.Parameters.AddWithValue("@Id", SearchId);

            SQLDataReader reader = cmd.ExecuteReader();

            // To make your code a bit more robust you should get
            // the indexes of the named columns...this is so that if
            // you modified the Schema of your database (e.g. you
            // added a new column in the middle, then it is more
            // resilient than using fixed value index numbers).

            int iId = oReader.GetOrdinal("Id");
            int iFirstname = oReader.GetOrdinal("Firstname");
            int iLastname = oReader.GetOrdinal("Lastname"); 

            while(reader.Read())
            {
                int id = reader.GetInt32(iId);
                string firstname = reader.GetString(iFirstname);
                string lastname = reader.GetString(iLastname);

                ....
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            con.Close();
            cmd = null;
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM