Showing posts with label DataBase. Show all posts
Showing posts with label DataBase. Show all posts

c# BLToolKit Основы или пошагово

Решил сделать инструкцию с картинками как работать с BLToolKit.
1 Скачать BLToolKit отсюда http://bltoolkit.net/Download.ashx . Качайте архив bltoolkit_dev.zip
2 Далее создаем проект в Visual Studio. Я создавал WinForms проект
3 Вот такие ссылки добавляем

4 Видим там есть папка Templates. Её можно взять из скачанного архива в bltoolkit.4.0.dev\Source\Templates

5 Далее добавляем файл *.tt . Это можно сделать если ткнуть по обозревателю решений. Там Добавить->Создать Элемент. В разделе "Код" есть соответствующий шаблон.

6 Далее заходим в Model1.tt . Там правим следующим образом (В моем случае модел генерируется для MSSQL):
<#@ template language="C#v3.5"         #>
<#@ output extension=".generated.cs"   #>
<#@ include file="TemplatesBLToolkit.ttinclude" #>
<#@ include file="TemplatesMSSQL.ttinclude"     #>
<#
    ConnectionString = @"Server=SQLEXPRESS;Database=ServerDB;Uid=myuser;Pwd=mypas";
 
    Namespace        = "Templates";
    DataContextName  = "DataModel";
 
    GenerateModel();
#>


7 Далее жмем компилировать проект и у нас генерируется необходимый класс, с которым мы уже и будем работать

Примеров работы со сгенерированным классом куча(Например вот), так что главное начало. Ссылка для скачивания примера данного проекта находится снизу.

https://www.box.com/s/bwkrhvfpvxbzjxvitdzp


C# MSSQL Simple example Read data


using System;
using System.Data;
using System.Data.SqlClient;


class Program
{
    static void Main()
    {
        string str = "Data Source=(local);Initial Catalog=Northwind;"
            + "Integrated Security=SSPI";
        ReadOrderData(str);
    }

    private static void ReadOrderData(string connectionString)
    {
        string queryString =
            "SELECT OrderID, CustomerID FROM dbo.Orders;";

        using (SqlConnection connection =
                   new SqlConnection(connectionString))
        {
            SqlCommand command =
                new SqlCommand(queryString, connection);
            connection.Open();

            SqlDataReader reader = command.ExecuteReader();

            // Call Read before accessing data. 
            while (reader.Read())
            {
                ReadSingleRow((IDataRecord)reader);
            }

            // Call Close when done reading.
            reader.Close();
        }
    }

    private static void ReadSingleRow(IDataRecord record)
    {
        Console.WriteLine(String.Format("{0}, {1}", record[0], record[1]));
    }

}

SQL Compact connection string "Data Source=C:\userDB.sdf;Password=password;Persist Security Info=True"

In thos case dont forget to use CE components, for example System.Data.SqlServerCe.SqlCeConnection

Изменить строку подключения в app.conig / How to change connection string in app.config

static void AddConnectionStringMyDB()
        {
            System.Configuration.Configuration config =
                ConfigurationManager.OpenExeConfiguration(
                ConfigurationUserLevel.None);
            ConnectionStringsSection csSection =
              config.ConnectionStrings;
            ConnectionStringSettings connection = new ConnectionStringSettings();
            connection.Name = "Rozn_Client.Properties.Settings.userDBConnectionString";
            connection.ProviderName = "Microsoft.SqlServerCe.Client.4.0";
            connection.ConnectionString = "Data Source=|DataDirectory|\\myDB.sdf;Password=mypassword;Persist Security Info=True";
            csSection.ConnectionStrings.Add(connection);
            config.Save(ConfigurationSaveMode.Modified);
            ConfigurationManager.RefreshSection("connectionStrings");
        }

c# фильтр datagridview


string namestr = "MyColumnName";
BindingSource.Filter = " name LIKE'" + namestr + "%'";

C# connect to dbf

using System.Data.OleDb;

...

            OleDbConnection _connection = new OleDbConnection();
            StringBuilder ConnectionString = new StringBuilder("");
            ConnectionString.Append(@"Provider=Microsoft.Jet.OLEDB.4.0;");
            ConnectionString.Append(@"Extended Properties=Paradox 5.x;");
            ConnectionString.Append(@"Data Source=D:\dbf;");
            _connection.ConnectionString = ConnectionString.ToString();
            try { _connection.Open(); }
            catch (Exception _e) { MessageBox.Show("Error openning database! " + _e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); }
            OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM kadr.db;", _connection);
            DataSet dsRetrievedData = new DataSet();
            da.Fill(dsRetrievedData);
            this.dataGridView1.DataSource = dsRetrievedData;
            this.dataGridView1.DataMember = dsRetrievedData.Tables[0].TableName;

С# запрос к базе / c# request to base

SqlCommand cmd = new SqlCommand("update table set bestOfTheBestField=@par where Na uslovie fantazii ne hvatilo");
cmd.Parameters.Add("@par", SqlDbType.Int).Value = (int)this.textBox.Text.Trim();
return cmd.ExecuteNonQuery();

C# MySQL read and insert in BLOB field

//Save
//-----------------------------------
MySql.Data.MySqlClient.MySqlConnection conn;
MySql.Data.MySqlClient.MySqlCommand cmd;

conn = new MySql.Data.MySqlClient.MySqlConnection();
cmd = new MySql.Data.MySqlClient.MySqlCommand();

string SQL;
UInt32 FileSize;
byte[] rawData;
FileStream fs;

conn.ConnectionString = "server=127.0.0.1;uid=root;" +
    "pwd=12345;database=test;";

try
{
    fs = new FileStream(@"c:\image.png", FileMode.Open, FileAccess.Read);
    FileSize = fs.Length;

    rawData = new byte[FileSize];
    fs.Read(rawData, 0, FileSize);
    fs.Close();

    conn.Open();

    SQL = "INSERT INTO file VALUES(NULL, @FileName, @FileSize, @File)";

    cmd.Connection = conn;
    cmd.CommandText = SQL;
    cmd.Parameters.AddWithValue("@FileName", strFileName);
    cmd.Parameters.AddWithValue("@FileSize", FileSize);
    cmd.Parameters.AddWithValue("@File", rawData);

    cmd.ExecuteNonQuery();

    MessageBox.Show("File Inserted into database successfully!",
        "Success!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

    conn.Close();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
    MessageBox.Show("Error " + ex.Number + " has occurred: " + ex.Message,
        "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

//Read
//-------------------------------------------------------------------------

MySql.Data.MySqlClient.MySqlConnection conn;
MySql.Data.MySqlClient.MySqlCommand cmd;
MySql.Data.MySqlClient.MySqlDataReader myData;

conn = new MySql.Data.MySqlClient.MySqlConnection();
cmd = new MySql.Data.MySqlClient.MySqlCommand();

string SQL;
UInt32 FileSize;
byte[] rawData;
FileStream fs;

conn.ConnectionString = "server=127.0.0.1;uid=root;" +
    "pwd=12345;database=test;";

SQL = "SELECT file_name, file_size, file FROM file";

try
{
    conn.Open();

    cmd.Connection = conn;
    cmd.CommandText = SQL;

    myData = cmd.ExecuteReader();

    if (! myData.HasRows)
        throw new Exception("There are no BLOBs to save");

    myData.Read();

    FileSize = myData.GetUInt32(myData.GetOrdinal("file_size"));
    rawData = new byte[FileSize];

    myData.GetBytes(myData.GetOrdinal("file"), 0, rawData, 0, FileSize);

    fs = new FileStream(@"C:\newfile.png", FileMode.OpenOrCreate, FileAccess.Write);
    fs.Write(rawData, 0, FileSize);
    fs.Close();

    MessageBox.Show("File successfully written to disk!",
        "Success!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

    myData.Close();
    conn.Close();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
    MessageBox.Show("Error " + ex.Number + " has occurred: " + ex.Message,
        "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

masterhost , подключение к mysql через ssh . Прямой доступ к mysql на хостинге

Небольшую инструкцию вы можете найти в faq'е самого мастерхоста , но к сожалению putty не поддерживает открытым соединение,если оно отвалилось - то отвалилось. Выхода два
1. писать самому
2. использовать MyEnTunnel
Несмотря на все заверения техподдержки мастерхоста что ssh тунель не отваливается при активной работе - он благопулочно и без зазрений совести это периодически всё-таки делает.

Итак настраиваем MyEnTunnel

Во вкладке Settings пишем
SSH Server: uXXXXX.ssh.masterhost.ru
Username: uXXXXX
Вводим пароль,ставим чтобы запускалось при старте компьютера,ну это если вдруг разработали десктопное приложение и устанавливаем программу пользователю


Во кладке Tunnels пишем в Local
3306:uXXXXX.mysql.masterhost.ru:3306
Жмём коннект и вуаля - наша программа работает,теперь она подключается на localhost на стандартный порт 3306


Смотрим чтобы замок тал зеленым


p.s. есть кстати хостинги без этой замороки - например 1gb

c# Protecting a connectionstring in a configuration file

  1. private void DataProtectionAPI()   
  2. {   
  3.     try   
  4.     {   
  5.         System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(   
  6.         System.Reflection.Assembly.GetExecutingAssembly().Location);   
  7.   
  8.         ConnectionStringsSection section =   
  9.         config.GetSection("connectionStrings"as ConnectionStringsSection;   
  10.   
  11.         if (!section.SectionInformation.IsProtected)   
  12.         {   
  13.             section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");   
  14.             config.Save();   
  15.         }   
  16.   
  17.     }   
  18.     catch   
  19.     {   
  20.     }   
  21. }