2021-06-12 14:09:28 +00:00
using System ;
using System.Collections.Generic ;
using System.Data.SqlClient ;
using System.Linq ;
using System.Text ;
using DataParameter = System . Data . SqlClient . SqlParameter ;
using DataCommand = System . Data . SqlClient . SqlCommand ;
using DataAdapter = System . Data . SqlClient . SqlDataAdapter ;
namespace ryCommonDb
{
2021-01-23 15:35:30 +00:00
/// <summary>
///
2021-06-12 14:09:28 +00:00
/// </summary>
public class SqlDataProvider : IDbInterface
{
ryCommonDb . MSSQLDb myDb = new MSSQLDb ( ) ;
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
2021-06-12 14:09:28 +00:00
/// <returns></returns>
public int ConnDb ( string sql )
{
myDb . fv_ConnStr = sql ;
return myDb . ConnDb ( ) ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
2021-06-12 14:09:28 +00:00
/// <returns></returns>
public int CloseDb ( )
{
myDb . CloseDb ( ) ;
return 1 ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
/// <param name="tableName"></param>
/// <param name="wheresql"></param>
2021-06-12 14:09:28 +00:00
/// <returns></returns>
public int GetCount ( string tableName , string wheresql )
{
string m_where = "" ;
if ( wheresql ! = "" )
{
m_where = " where " + wheresql ;
}
string m_order = "(order by id)" ;
string sql = "select count(*) from (select *,(ROW_NUMBER() OVER" + m_order + ") as myrow from " + tableName + m_where + ") as t" ;
return Convert . ToInt32 ( myDb . ExecuteSQL ( sql , ( DataParameter [ ] ) GetParameter ( ) , "0" ) [ 0 ] ) ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
/// <param name="newPwd"></param>
2021-06-12 14:09:28 +00:00
/// <returns></returns>
public int ChangePwd ( string newPwd )
{
return - 1000 ;
}
private List < SQLIitem > list_param = new List < SQLIitem > ( ) ;
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
/// <param name="name"></param>
2021-06-12 14:09:28 +00:00
/// <param name="value"></param>
public void AddParameter ( string name , object value )
{
list_param . Add ( new SQLIitem ( name , value ) ) ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
/// <param name="name"></param>
2021-06-12 14:09:28 +00:00
/// <param name="value"></param>
public void ClearParameter ( object name , object value )
{
list_param . Clear ( ) ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
2021-06-12 14:09:28 +00:00
/// <returns></returns>
public object [ ] GetParameter ( )
{
DataParameter [ ] defPar = new DataParameter [ list_param . Count ] ;
for ( int i = 0 ; i < list_param . Count ; i + + )
{
SQLIitem item = ( SQLIitem ) list_param [ i ] ;
defPar [ i ] = new DataParameter ( "@" + item . Field . TrimStart ( '@' ) . TrimStart ( '[' ) . TrimEnd ( ']' ) , item . value ) ;
}
return defPar ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
/// <param name="mySQL"></param>
2021-06-12 14:09:28 +00:00
/// <returns></returns>
public object [ ] GetParameter ( RyQuickSQL mySQL )
{
DataParameter [ ] defPar = new DataParameter [ mySQL . List . Count + mySQL . List_param . Count ] ;
for ( int i = 0 ; i < mySQL . List . Count ; i + + )
{
SQLIitem item = ( SQLIitem ) mySQL . List [ i ] ;
defPar [ i ] = new DataParameter ( "@" + item . Field . TrimStart ( '@' ) . TrimStart ( '[' ) . TrimEnd ( ']' ) , item . value ) ;
}
for ( int i = mySQL . List . Count ; i < mySQL . List . Count + mySQL . List_param . Count ; i + + )
{
SQLIitem item = ( SQLIitem ) mySQL . List_param [ i - mySQL . List . Count ] ;
defPar [ i ] = new DataParameter ( "@" + item . Field . TrimStart ( '@' ) . TrimStart ( '[' ) . TrimEnd ( ']' ) , item . value ) ;
}
return defPar ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
/// <param name="tableName"></param>
/// <param name="wheresql"></param>
/// <param name="orderSQL"></param>
2021-06-12 14:09:28 +00:00
/// <returns></returns>
public string GetPageSQL ( string tableName , string wheresql , string orderSQL )
{
return GetPageSQL ( "*" , tableName , wheresql , orderSQL ) ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
/// <param name="field"></param>
/// <param name="tableName"></param>
/// <param name="wheresql"></param>
/// <param name="orderSQL"></param>
2021-06-12 14:09:28 +00:00
/// <returns></returns>
public string GetPageSQL ( string field , string tableName , string wheresql , string orderSQL )
{
string m_where = "" ;
if ( wheresql ! = "" )
{
m_where = " where " + wheresql ;
}
string m_order = "(order by id)" ;
if ( orderSQL ! = "" )
{
m_order = "(" + orderSQL + ")" ;
}
return "select " + field + " from (select *,(ROW_NUMBER() OVER" + m_order + ")as myrow from " + tableName + m_where + ") as t where t.myrow between {recordnum1} and {pageendnum1}" ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
/// <param name="tableName"></param>
/// <param name="wheresql"></param>
/// <param name="orderSQL"></param>
2021-06-12 14:09:28 +00:00
/// <returns></returns>
public string GetPageSQL2 ( string tableName , string wheresql , string orderSQL )
{
return "" ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
/// <param name="field"></param>
/// <param name="tableName"></param>
/// <param name="wheresql"></param>
/// <param name="orderSQL"></param>
2021-06-12 14:09:28 +00:00
/// <returns></returns>
public string GetPageSQL2 ( string field , string tableName , string wheresql , string orderSQL )
{
return "" ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <param name="Parameter"></param>
2021-06-12 14:09:28 +00:00
/// <returns></returns>
public bool ContainsData ( string sql , object [ ] Parameter )
{
System . Data . DataSet ds = ReadData ( sql , Parameter ) ;
if ( ds ! = null & & ds . Tables . Count > 0 & & ds . Tables [ 0 ] . Rows . Count > 0 )
{
return true ;
}
return false ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <param name="Parameter"></param>
2021-06-12 14:09:28 +00:00
/// <returns></returns>
public System . Data . DataSet ReadData ( string sql , object [ ] Parameter )
{
try
{
DataCommand cmd = myDb . SQL_cn . CreateCommand ( ) ;
cmd . Parameters . Clear ( ) ;
if ( Parameter ! = null )
cmd . Parameters . AddRange ( Parameter ) ;
cmd . CommandText = sql ;
DataAdapter ad = new DataAdapter ( cmd ) ;
System . Data . DataSet ds = new System . Data . DataSet ( ) ;
ad . Fill ( ds ) ;
ad . Dispose ( ) ;
cmd . Parameters . Clear ( ) ;
cmd . Dispose ( ) ;
return ds ;
}
catch { return new System . Data . DataSet ( ) ; }
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <param name="mySQL"></param>
2021-06-12 14:09:28 +00:00
/// <returns></returns>
public System . Data . DataSet ReadData ( string sql , RyQuickSQL mySQL )
{
return ReadData ( sql , GetParameter ( mySQL ) ) ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
2021-06-12 14:09:28 +00:00
/// <returns></returns>
public System . Data . DataSet ReadData ( string sql )
{
object [ ] Parameter = null ;
return ReadData ( sql , Parameter ) ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
/// <param name="tableName"></param>
/// <param name="id"></param>
2021-06-12 14:09:28 +00:00
/// <returns></returns>
public System . Data . DataSet ReadData ( string tableName , string id )
{
object [ ] Parameter = null ;
return ReadData ( "select * from " + tableName + " where id=" + id , Parameter ) ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <param name="Parameter"></param>
2021-06-12 14:09:28 +00:00
/// <returns></returns>
public int ExecuteNonQuery ( string sql , object [ ] Parameter )
{
DataCommand cmd = myDb . SQL_cn . CreateCommand ( ) ;
cmd . Parameters . Clear ( ) ;
if ( Parameter ! = null )
cmd . Parameters . AddRange ( Parameter ) ;
cmd . CommandText = sql ;
int i = cmd . ExecuteNonQuery ( ) ;
cmd . Parameters . Clear ( ) ;
cmd . Dispose ( ) ;
return i ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <param name="mySQL"></param>
2021-06-12 14:09:28 +00:00
/// <returns></returns>
public int ExecuteNonQuery ( string sql , RyQuickSQL mySQL )
{
return ExecuteNonQuery ( sql , GetParameter ( mySQL ) ) ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
2021-06-12 14:09:28 +00:00
/// <returns></returns>
public int ExecuteNonQuery ( string sql )
{
object [ ] pram = null ;
return ExecuteNonQuery ( sql , pram ) ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
/// <param name="tableName"></param>
/// <param name="id"></param>
2021-06-12 14:09:28 +00:00
/// <returns></returns>
public int DelById ( string tableName , string id )
{
object [ ] param = null ;
return ExecuteNonQuery ( "delete from " + tableName + " where id=" + id , param ) ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
/// </summary>
/// <param name="mySQL"></param>
2021-06-12 14:09:28 +00:00
/// <returns></returns>
public int CreateDb ( RyQuickSQL mySQL )
{
string tmpSQL = "CREATE TABLE " + mySQL . TableName + " ([ID] INTEGER PRIMARY KEY," ;
for ( int i = 0 ; i < mySQL . List . Count ; i + + )
{
SQLIitem item = ( SQLIitem ) mySQL . List [ i ] ;
if ( item . value is string )
{
if ( item . len = = 0 )
{
tmpSQL + = "[" + item . Field + "] [nvarchar](max)," ;
}
else
{ tmpSQL + = "[" + item . Field + "] [nvarchar](" + item . len + ")," ; }
}
else if ( item . value is int | | item . value is Int64 )
{
tmpSQL + = "[" + item . Field + "] [int] 0," ;
}
else if ( item . value is double | | item . value is float )
{
tmpSQL + = "[" + item . Field + "] [float] 0," ;
}
else if ( item . value is DateTime )
{
tmpSQL + = "[" + item . Field + "] [DATETIME]," ;
}
}
object [ ] param = null ;
return ExecuteNonQuery ( tmpSQL . Substring ( 0 , tmpSQL . Length - 1 ) + ")" , param ) ;
}
SqlTransaction tr ;
2021-01-23 15:35:30 +00:00
/// <summary>
///
2021-06-12 14:09:28 +00:00
/// </summary>
public void BeginTransaction ( )
{
tr = myDb . SQL_cn . BeginTransaction ( ) ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
2021-06-12 14:09:28 +00:00
/// </summary>
public void Commit ( )
{
tr . Commit ( ) ;
}
2021-01-23 15:35:30 +00:00
/// <summary>
///
2021-06-12 14:09:28 +00:00
/// </summary>
public void Free ( )
{
list_param . Clear ( ) ;
myDb . CloseDb ( ) ;
}
}
}