Posts Tagged InputOutput
Class to Simplify and Minimize Code for Stored Procedures and TSQL
Posted by Kelly's Chronicles in Uncategorized on April 17, 2016
First of all if you are using TSQL in your code you really need to get in a another line of work. It isn’t scalable, difficult to maintain and is generally a bad practice. But I know some of you still do it so I did include it. This class will allow you to in a few lines of code do your select, update, insert or delete statements in a very few lines of code. All that is required of the developer is to list the values in order (if you are using stored procedures) that are required. Also included is how to declare a new instance of a sqlparametercollection – which you aren’t suppose to be able to do. I ended up not needing it but included it just in case someone needs to do that someday. Also if you are using a strongly typed dataset there is a method included of how to do that. After the code is example of usage. Have a great day!
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Data.SqlClient;
public class clsData
{
public SqlConnection sqlconn = new SqlConnection();
public string Error_Message;
public List<SqlParameter> ParamList = new List<SqlParameter>();
public ArrayList ParamValues = new ArrayList();
public int SQLExecuteNonQueryValue;
public clsData()
public enum SQLAction
{
SelectAction,
UpdateInsertDeleteAction
}
public virtual DataTable DataAction(clsData.SQLAction Action, DataTable dt, string cmdtext, string ParamValues = “”)
{
SQLExecuteNonQueryValue = -1;
SqlCommand cmd = new SqlCommand();
cmd.CommandText = cmdtext;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = sqlconn;
this.GetParameterList(cmdtext);
if (!string.IsNullOrEmpty(Error_Message)) {
return null;
}
if (!string.IsNullOrEmpty(ParamValues)) {
this.ParseSQLParameterValues(ParamValues);
for (i = 0; i <= this.ParamList.Count – 1; i++) {
cmd.Parameters.AddWithValue(this.ParamList[i].ToString(), this.ParamValues[i].ToString());
}
}
//Debug.WriteLine(cmd.CommandText)
try {
cmd.Connection.Open();
switch (Action) {
case SQLAction.SelectAction:
dt.Load(cmd.ExecuteReader());
break;
case SQLAction.UpdateInsertDeleteAction:
//Check this value to make sure everything went ok
SQLExecuteNonQueryValue = cmd.ExecuteNonQuery();
cmd.Connection.Close();
return null;
}
cmd.Connection.Close();
} catch (Exception ex) {
Error_Message = “There was a problem with ” + cmdtext + “. “;
return null;
}
//removing duplicate table from dataset
for (i = 0; i <= ds_Copy.Tables.Count – 1; i++) {
if (ds_Copy.Tables(i).TableName == dt.TableName) {
ds_Copy.Tables(i).Clear();
ds_Copy.Tables(i).Columns.Clear();
}
}
//placing datatable in the dataset
ds_Copy.Merge(dt, false, MissingSchemaAction.Add);
Error_Message = “”;
return dt;
}
public DataTable DataActionTSQL(clsData.SQLAction Action, DataTable dt, string sqlstring)
{
SQLExecuteNonQueryValue = -1;
SqlCommand cmd = new SqlCommand();
cmd.CommandText = sqlstring;
cmd.Connection = sqlconn;
try {
cmd.Connection.Open();
switch (Action) {
case SQLAction.SelectAction:
dt.Load(cmd.ExecuteReader());
break;
case SQLAction.UpdateInsertDeleteAction:
//Check this value to make sure everything went ok
SQLExecuteNonQueryValue = cmd.ExecuteNonQuery();
cmd.Connection.Close();
return null;
}
cmd.Connection.Close();
} catch (Exception ex) {
Error_Message = “There was a problem with ” + sqlstring + “. “;
return null;
}
//removing duplicate table from dataset
for (i = 0; i <= ds_Copy.Tables.Count – 1; i++) {
if (ds_Copy.Tables(i).TableName == dt.TableName) {
ds_Copy.Tables(i).Clear();
ds_Copy.Tables(i).Columns.Clear();
}
}
//placing datatable in the dataset
ds_Copy.Merge(dt, false, MissingSchemaAction.Add);
Error_Message = “”;
return dt;
}
private List<SqlParameter> GetParameterList(string ProcName)
{
//Get the parameters for the selected stored procedure
List<SqlParameter> inputParamList = new List<SqlParameter>();
ParamList.Clear();
using (SqlConnection cn = new SqlConnection()) {
DispatcherTool.My.MySettings Settings = new DispatcherTool.My.MySettings();
cn.ConnectionString = Settings.SRAConnectionString;
SqlCommand myCommand = new SqlCommand();
myCommand.Connection = cn;
myCommand.CommandText = ProcName;
myCommand.CommandType = System.Data.CommandType.StoredProcedure;
try {
cn.Open();
SqlCommandBuilder.DeriveParameters(myCommand);
cn.Close();
} catch (Exception ex) {
Error_Message = “There was a problem with the connection to the database.”;
return null;
}
//Dim sqlparams As SqlParameterCollection = DirectCast(GetType(SqlParameterCollection).GetConstructor(BindingFlags.NonPublic Or BindingFlags.Instance, Nothing, Type.EmptyTypes, Nothing).Invoke(Nothing), SqlParameterCollection)
foreach (SqlParameter param in myCommand.Parameters) {
if (param.Direction == System.Data.ParameterDirection.Input || param.Direction == System.Data.ParameterDirection.InputOutput) {
//sqlparams.Add(param.ParameterName & ” – ” & param.SqlDbType.ToString())
//Debug.WriteLine(param.ParameterName & ” – ” & param.SqlDbType.ToString())
inputParamList.Add(param);
//Else
// sqlparams.Add(param.ParameterName & ” – ” & param.SqlDbType)
//Debug.WriteLine(param.ParameterName & ” -2 ” & param.SqlDbType)
}
}
}
this.ParamList = inputParamList;
Error_Message = “”;
return this.ParamList;
}
public void ParseSQLParameterValues(string ValueString)
{
ParamValues.Clear();
string[] parts = ValueString.Split(new char[] { ‘,’ });
string part = null;
foreach (string part_loopVariable in parts) {
part = part_loopVariable;
ParamValues.Add(part);
}
}
//’Public Shared Function ConvertToTypedDataTable(Of T As {Data.DataTable, New})(ByVal dtBase As Data.DataTable) As T
//’ Dim dtTyped As New T
//’ dtTyped.Merge(dtBase)
//’ Return dtTyped
//’End Function
}
And then it’s use…..
private void Button1_Click(System.Object sender, System.EventArgs e)
{
Strongly_Typed_DataSet.usp_Your_Stored_Procedure dt = new Strongly_Typed_DataSet.usp_Your_Stored_Procedure();
DataGridView1.DataSource = cn.DataAction(clsData.SQLAction.SelectAction, dt, ds.usp_Get_PrinterName_for_PickList_Printing.ToString, “Tubing”);
//DataGridView1.DataSource = cn.DataActionTSQL(clsData.SQLAction.SelectAction, dt, “SELECT *FROM Your_Table”)
}
action, AddWithValue, Also, ArrayList, Check, Class, Clear, Close, clsData, cmdtext, CODE, Collections, columns, CommandText, CommandType, Configuration, Connection, ConvertToTypedDataTable, Count, Data, DataAction, DataActionTSQL, Database, DataSet, DataTable, Debug, DeriveParameters, developer, Diagnostics, DirectCast, Direction, DispatcherTool, ds_Copy, dtBase, Else, EmptyTypes, Error_Message, example, Exception, ExecuteNonQuery, ExecuteReader, foreach, FUNCTION, Generic, GetConstructor BindingFlags, GetParameterList, GetType, Handle, Input, InputOutput, inputParamList, instance, List, Load, Merge, method, MissingSchemaAction, myCommand, MySettings, NonPublic, Open, Param, ParameterDirection, ParameterName, parameters, ParamList, ParamValues, ParseSQLParameterValues, part_loopVariable, procedure, Procedures, ProcName, Public, Return, SelectAction, Settings, Split, SQLAction, SqlClient, SqlCommand, SqlCommandBuilder, sqlconn, SqlConnection, SqlDbType, SQLExecuteNonQueryValue, SqlParameter, SqlParameterCollection, sqlparams, statements, StoredProcedure, System, TableName, Tables, TSQL, Type, UpdateInsertDeleteAction, usage, WriteLine
Archives
- April 2018
- January 2018
- December 2017
- June 2017
- May 2017
- May 2016
- April 2016
- September 2015
- July 2014
- June 2014
- November 2012
- October 2012
- June 2012
- May 2012
- April 2012
- January 2012
- September 2011
- August 2011
- July 2011
- May 2009
- April 2009
- March 2009
- February 2009
- January 2009
- December 2008
- November 2008
- October 2008
- August 2008
- July 2008
- June 2008
- May 2008
Recent Comments