5ea9a814d6
Pdf Import rewritten to greatly improve QR Code detection, reduce reliance on iTextSharp and improve thumbnails. Fixes #50
174 lines
6.7 KiB
C#
174 lines
6.7 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Data;
|
|
using System.Data.Odbc;
|
|
using System.Data.SqlClient;
|
|
|
|
namespace Disco.Services.Expressions.Extensions
|
|
{
|
|
public static class DataExt
|
|
{
|
|
#region SqlClient
|
|
|
|
private static SqlConnection BuildSqlConnection(string Server, string Database, string Username, string Password)
|
|
{
|
|
var dbConnectionStringBuilder = new SqlConnectionStringBuilder();
|
|
dbConnectionStringBuilder.ApplicationName = "Disco";
|
|
dbConnectionStringBuilder.DataSource = Server;
|
|
dbConnectionStringBuilder.InitialCatalog = Database;
|
|
dbConnectionStringBuilder.MultipleActiveResultSets = true;
|
|
dbConnectionStringBuilder.PersistSecurityInfo = true;
|
|
if (Username == null || Password == null)
|
|
dbConnectionStringBuilder.IntegratedSecurity = true;
|
|
else
|
|
{
|
|
dbConnectionStringBuilder.UserID = Username;
|
|
dbConnectionStringBuilder.Password = Password;
|
|
}
|
|
|
|
return new SqlConnection(dbConnectionStringBuilder.ConnectionString);
|
|
}
|
|
private static void BuildSqlParameters(SqlCommand dbCommand, Hashtable SqlParameters)
|
|
{
|
|
if (SqlParameters != null)
|
|
{
|
|
foreach (var sqlParameterKey in SqlParameters.Keys)
|
|
{
|
|
string key = sqlParameterKey.ToString();
|
|
if (!key.StartsWith("@"))
|
|
key = string.Concat("@", key);
|
|
dbCommand.Parameters.AddWithValue(key, SqlParameters[sqlParameterKey]);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static DataTable QuerySqlDatabase(string Server, string Database, string Username, string Password, string SqlQuery, Hashtable SqlParameters)
|
|
{
|
|
using (SqlConnection dbConnection = BuildSqlConnection(Server, Database, Username, Password))
|
|
{
|
|
using (SqlCommand dbCommand = new SqlCommand(SqlQuery, dbConnection))
|
|
{
|
|
BuildSqlParameters(dbCommand, SqlParameters);
|
|
using (SqlDataAdapter dbAdapter = new SqlDataAdapter(dbCommand))
|
|
{
|
|
var dbTable = new DataTable();
|
|
dbAdapter.Fill(dbTable);
|
|
return dbTable;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
public static DataTable QuerySqlDatabase(string Server, string Database, string SqlQuery, Hashtable SqlParameters)
|
|
{
|
|
return QuerySqlDatabase(Server, Database, null, null, SqlQuery, SqlParameters);
|
|
}
|
|
public static DataTable QuerySqlDatabase(string Server, string Database, string SqlQuery)
|
|
{
|
|
return QuerySqlDatabase(Server, Database, null, null, SqlQuery, null);
|
|
}
|
|
|
|
public static object QuerySqlDatabaseScalar(string Server, string Database, string Username, string Password, string SqlQuery, Hashtable SqlParameters)
|
|
{
|
|
using (SqlConnection dbConnection = BuildSqlConnection(Server, Database, Username, Password))
|
|
{
|
|
using (SqlCommand dbCommand = new SqlCommand(SqlQuery, dbConnection))
|
|
{
|
|
BuildSqlParameters(dbCommand, SqlParameters);
|
|
try
|
|
{
|
|
dbConnection.Open();
|
|
return dbCommand.ExecuteScalar();
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
finally
|
|
{
|
|
dbConnection.Close();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
public static object QuerySqlDatabaseScalar(string Server, string Database, string SqlQuery, Hashtable SqlParameters)
|
|
{
|
|
return QuerySqlDatabaseScalar(Server, Database, null, null, SqlQuery, SqlParameters);
|
|
}
|
|
public static object QuerySqlDatabaseScalar(string Server, string Database, string SqlQuery)
|
|
{
|
|
return QuerySqlDatabaseScalar(Server, Database, null, null, SqlQuery, null);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ODBC
|
|
|
|
private static OdbcConnection BuildOdbcConnection(string ConnectionString)
|
|
{
|
|
return new OdbcConnection(ConnectionString);
|
|
}
|
|
private static void BuildOdbcParameters(OdbcCommand dbCommand, Hashtable OdbcParameters)
|
|
{
|
|
if (OdbcParameters != null)
|
|
{
|
|
foreach (var odbcParameterKey in OdbcParameters.Keys)
|
|
{
|
|
string key = odbcParameterKey.ToString();
|
|
dbCommand.Parameters.AddWithValue(key, OdbcParameters[odbcParameterKey]);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static DataTable QueryOdbcDatabase(string ConnectionString, string OdbcQuery, Hashtable OdbcParameters)
|
|
{
|
|
using (OdbcConnection dbConnection = BuildOdbcConnection(ConnectionString))
|
|
{
|
|
using (OdbcCommand dbCommand = new OdbcCommand(OdbcQuery, dbConnection))
|
|
{
|
|
BuildOdbcParameters(dbCommand, OdbcParameters);
|
|
using (OdbcDataAdapter dbAdapter = new OdbcDataAdapter(dbCommand))
|
|
{
|
|
var dbTable = new DataTable();
|
|
dbAdapter.Fill(dbTable);
|
|
return dbTable;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
public static DataTable QueryOdbcDatabase(string ConnectionString, string OdbcQuery)
|
|
{
|
|
return QueryOdbcDatabase(ConnectionString, OdbcQuery, null);
|
|
}
|
|
|
|
public static object QueryOdbcDatabaseScalar(string ConnectionString, string OdbcQuery, Hashtable OdbcParameters)
|
|
{
|
|
using (OdbcConnection dbConnection = BuildOdbcConnection(ConnectionString))
|
|
{
|
|
using (OdbcCommand dbCommand = new OdbcCommand(OdbcQuery, dbConnection))
|
|
{
|
|
BuildOdbcParameters(dbCommand, OdbcParameters);
|
|
try
|
|
{
|
|
dbConnection.Open();
|
|
return dbCommand.ExecuteScalar();
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
finally
|
|
{
|
|
dbConnection.Close();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
public static object QueryOdbcDatabaseScalar(string ConnectionString, string OdbcQuery)
|
|
{
|
|
return QueryOdbcDatabaseScalar(ConnectionString, OdbcQuery, null);
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|