#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(); }