Как получить данные в текстовое поле C#

#c# #.net #windows #visual-studio-2017

#c# #.net #Windows #visual-studio-2017

Вопрос:

Мне нужна ваша помощь, у меня есть хранимая процедура, которая возвращает последнее число CustomerID 1: вот так

 Create PROCEDURE [dbo].[Get_Last_Customer]

as

begin

Select IsNull(MAX (CustomerID),0)  1 From CustomersTbl


End
 

Теперь в проекте у меня есть класс с именем DataAccessLayer, и он имеет следующие функции :

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace Test.Data_Layer
{
    class DataAccessLayer
    {
        SqlConnection sqlconnection;

        public DataAccessLayer()
        {
            sqlconnection = new SqlConnection(ConfigurationManager.ConnectionStrings["connSQLServer"].ConnectionString);
        }

        //Method To Open Connection
        public void Open()
        {
            if (sqlconnection.State != ConnectionState.Open)
            {
                sqlconnection.Open();
            }
        }

        //Method To Close Connection
        public void Close()
        {
            if (sqlconnection.State == ConnectionState.Open)
            {
                sqlconnection.Close();
            }
        }
        //Method To Read Data From Database
        public DataTable SelectData(string stored_procedure, SqlParameter[] param)
        {
            SqlCommand sqlcmd = new SqlCommand();
            sqlcmd.CommandType = CommandType.StoredProcedure;
            sqlcmd.CommandText = stored_procedure;
            sqlcmd.Connection = sqlconnection;
            if(param !=null)
            {
                sqlcmd.Parameters.AddRange(param);
            }
            SqlDataAdapter da = new SqlDataAdapter(sqlcmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            return dt;
        }
        //Method To Insert , Update And Delete From Database ( You Need To Open And Close The Connection )
        public void ExecuteCommand(string stored_procedure, SqlParameter[] param)
        {
            SqlCommand sqlcmd = new SqlCommand();
            sqlcmd.CommandType = CommandType.StoredProcedure;
            sqlcmd.CommandText = stored_procedure;
            sqlcmd.Connection = sqlconnection;
            if (param != null)
            {
                sqlcmd.Parameters.AddRange(param);
            }
            sqlcmd.ExecuteNonQuery();
        }

    }
}
 

Итак, у меня есть класс create в бизнес-слое с именем CLS_GetLastRecord, и у него есть следующий код:

 using System.Data.SqlClient;
using System.Data;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test.Business_Layer
{
    class CLS_GetLastRecord
    {
        public DataTable GetLastRecord()
        {
            Data_Layer.DataAccessLayer DAL = new Data_Layer.DataAccessLayer();
            DataTable Dt = new DataTable();
            Dt = DAL.SelectData("Get_Last_Customer", null);
            DAL.Close();
            return Dt;
        }

    }
}
 

Хорошо, теперь последний шаг, который вызывает эту функцию для формы, поэтому я создаю форму с помощью текстового поля :
при загрузке действия я помещаю этот код, чтобы получить последнее число customerid 1, но это не работает: (

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

namespace Test.PL
{
    public partial class FrmGetLastRecord : Form
    {
        Business_Layer.CLS_GetLastRecord GetLastRecord = new Business_Layer.CLS_GetLastRecord();

        public FrmGetLastRecord()
        {
            InitializeComponent();
        }
        private void FrmGetLastRecord_Load(object sender, EventArgs e)
        {
            textBox1.Text = GetLastRecord.GetLastRecord().ToString();
        }
    }
}
 

Есть идеи, как с этим справиться?

Комментарии:

1. Вы заметили, что если в CustomersTbl нет строк, вы не получаете 1, верно?

2. Да, я заметил, но я не получаю 1, вы правы

3. Спасибо, я получил это сейчас, отредактировав действие формы загрузки на: private void FrmGetLastRecord_Load(отправитель объекта, EventArgs e) { DataTable tbl = GetLastRecord . GetLastRecord(); TextBox1.Text = (Преобразовать. ToInt32(табл.строк [0][0])). toString(); }