Главная страница

Автоматизированная информационная система Оптовый продовольственный склад. 1. Курсовая - ПЭИС. Курсовая работа по дисциплинам Проектирование экономических информационных систем иБазы данных


Скачать 0.82 Mb.
НазваниеКурсовая работа по дисциплинам Проектирование экономических информационных систем иБазы данных
АнкорАвтоматизированная информационная система Оптовый продовольственный склад
Дата19.05.2021
Размер0.82 Mb.
Формат файлаdoc
Имя файла1. Курсовая - ПЭИС.doc
ТипКурсовая
#206993
страница4 из 7
1   2   3   4   5   6   7

6.1Класс MySQL


Статический класс MySQL является самой важной частью приложения. Именно он определяет параметры для подключения к базе данных, само подключение и доступ к данным.

using System;

using System.Data;

using System.Data.Odbc;

using System.Collections.Generic;

namespace winOrders

{

static class MySQL

{

public static string Driver { get; set; }

public static string Server { get; set; }

public static int Port { get; set; }

public static string User { get; set; }

public static string Pass { get; set; }

public static string Database { get; set; }

public static OdbcConnection Connection { get; set; }

public static Link CurrentUser { get; set; }
public static string ConnectionString()

{// Формирование строки подключения к БД

return "DRIVER=" + Driver + ";"

+ "SERVER=" + Server + ";"

+ "PORT=" + Port.ToString() + ";"

+ "USER=" + User + ";"

+ "PASSWORD=" + Pass + ";"

+ "DATABASE=" + Database + ";"

+ "stmt=SET NAMES 'cp1251';OPTION=4;";

}
public static OdbcConnection GetConnection()

{// Формирование подключения к БД

return new OdbcConnection(ConnectionString());

}
public static DataTable TableStructure(this string TableName)

{ // Возвращает таблицу структуры таблицы базы данных по имени таблицы

// простите за тавтологию :)

var dt = new DataTable();

string SQLstring =

@"SELECT

i.COLUMN_COMMENT as Synonym,

i.COLUMN_NAME as Name,

i.DATA_TYPE as Type,

i.CHARACTER_MAXIMUM_LENGTH as Length,

i.COLUMN_KEY as _Key,

k.REFERENCED_TABLE_NAME as rTab,

k.REFERENCED_COLUMN_NAME as rCol

FROM information_schema.COLUMNS as i

LEFT JOIN information_schema.KEY_COLUMN_USAGE as k ON

i.TABLE_SCHEMA = k.TABLE_SCHEMA AND

i.TABLE_NAME = k.TABLE_NAME AND

i.COLUMN_NAME = k.COLUMN_NAME

WHERE i.TABLE_SCHEMA = '" + Database + "' and i.TABLE_NAME = '" + TableName + "'";

dt.Fill(SQLstring);

return dt;

}
public static string GetSynonym(this string TableName)

{// Определяет пользовательское представление таблицы БД по имени таблицы

string SQLstring =

@"SELECT LEFT(TABLE_COMMENT,LOCATE(';', TABLE_COMMENT)-1)

FROM information_schema.`TABLES`

where TABLE_SCHEMA = '"+Database+"' and TABLE_NAME = '"+TableName+"'";

string resultString = GetCommand(SQLstring).ExecuteScalar().ToString();

return resultString == "" ? TableName : resultString;

}
public static string GetSynonym(this string TableName, string ColumnName)

{// Определяет пользовательское представление колонки таблицы БД

string SQLstring =

"SELECT COLUMN_COMMENT FROM information_schema.`COLUMNS`"+

"where TABLE_SCHEMA = '"+ Database+"'"

+" and TABLE_NAME = '"+ TableName+"'"

+" and COLUMN_NAME = '"+ ColumnName+"'";

string resultString = GetCommand(SQLstring).ExecuteScalar().ToString();

return resultString == "" ? ColumnName : resultString;

}
public static string GetSynonym(this DataRow row)

{// Находит пользовательское представление клонки в строке таблицы структуры БД

return row.GetCol("Synonym") == "" ? row.GetName() : row.GetCol("Synonym");

}
public static OdbcType GetOdbcType(string TypeName)

{// Определение типа данных по имени типа

switch (TypeName)

{

case "int": return OdbcType.Int;

case "varchar": return OdbcType.VarChar;

case "tinyint": return OdbcType.TinyInt;

case "date": return OdbcType.Date;

case "datetime": return OdbcType.DateTime;
default: return OdbcType.VarChar;

}

}
public static OdbcType GetOdbcType(this DataRow row)

{// Получение значения типа данных из строки таблицы структуры БД

return GetOdbcType(row.GetCol("Type"));

}
public static int GetLenght(this DataRow row)

{// Получение длины значения для колонки из строки талицы структуры БД

return row.GetCol("Length") == "" ? 1 : int.Parse(row.GetCol("Length"));

}
public static string GetName(this DataRow row)

{// получение поля "Name"

// необходимо часто, поэтому выделено в отдельный метод

return row.GetCol("Name");

}
public static string GetCol(this DataRow row, string ColName)

{// Получение колонки таблицы по имени с проверкой существования колонки

if (row.Table.Columns.Contains(ColName))

return row[ColName].ToString();

else throw new Exception("Нет колонки "+ColName+"!");

}
public static bool GetBoolCol(this DataRow row, string ColName)

{// Конвертация tinyint в bool

return row.GetCol(ColName) == "1" ? true : false;

}
public static int GetLastId()

{// Получение последнего автоматически сгенерированного идентификатора

return int.Parse(GetCommand("SELECT LAST_INSERT_ID()").ExecuteScalar().ToString());

}
public static int GetId(this DataRow row)

{// Получение поля "id"

string id = row.GetCol("id").ToString();

return id=="" ? 0 : int.Parse(id);

}
public static OdbcParameter GetParameter(this DataRow row)

{// Формирование параметра к запросу

return new OdbcParameter("@" + row.GetName(), row.GetOdbcType(), row.GetLenght(), row.GetName());

}
public static OdbcDataAdapter GetAdapter(string SQLstring)

{// Получение дата-адаптера

return new OdbcDataAdapter(SQLstring, Connection);

}

public static void Fill(this DataTable table, string SQLstring)

{// заполнение таблицы данными на основе строки SQL запроса

table.Clear();

GetAdapter(SQLstring).Fill(table);

}
public static OdbcCommand GetCommand(string SQLstring)

{// Получение объекта OdbcCommand

return new OdbcCommand(SQLstring, Connection);

}
public static bool TestConnection()

{// Проверка соединения с БД

bool result = true;

try

{

Connection.Open();

}

catch (Exception)

{

result = false;

}

return result;

}
public static List<Link> ToLinksList(this DataTable dt)

{// Формирование списка ссылок из таблицы

return new List<Link>(dt.AsEnumerable()

.Select(r => new Link(dt.TableName, r.GetId(), r.GetName())));

}
public static List<Link> GetLinkCollection(string tableName)

{// Получение списка ссылок для выпадающих списков

DataTable dt = new DataTable(tableName);

dt.Fill("SELECT id, Name FROM "+tableName);

return dt.ToLinksList();

}
public static string ToMySQL(this DateTime date)

{// Конвертация даты в строку формата MySQL

return "'" + string.Format("{0:yyyy-MM-dd HH:mm:ss}", date) + "'";

}

}

}


1   2   3   4   5   6   7


написать администратору сайта