Executar comando no banco de dados SqlServer 2008 Express no Visual Studio 2010

Surgiu a necessidade  de executar um arquivo.sql para criar as tabelas já modeladas, usando visual studio 2010 em banco de dados sqlserver 2008 express. Para isso criei uma classe em C# que ao ser criada recebe o caminho do banco e o caminho do arquivo com os comandos.

Classe Executa:

class Executa{
string strConexao{get;set;}
 string arquivoCom{get;set;}
 string comando{get;set;}
public Executa(string pathbd,string pathcom){
 //somente continua se existir um caminho para banco
 if(!String.IsNullOrEmpty(pathbd)){
 //atribui as variaveis
 this.arquivoCom = pathcom;

 //cria string conexao
 SqlConnectionStringBuilder stringCon = new SqlConnectionStringBuilder();
 stringCon.DataSource = @".\SQLEXPRESS";
 stringCon.AttachDBFilename = pathbd;
 stringCon.UserInstance = true;
 stringCon.IntegratedSecurity = true;
strConexao = stringCon.ToString();
 Console.WriteLine(strConexao);
 }else{throw new Exception("Deve informar um banco");}
 }

 public void ComandoAoBanco(){
 try
 {
 using (System.IO.StreamReader sr = new System.IO.StreamReader(arquivoCom))
 {
 comando = sr.ReadToEnd();
 }
 if (String.IsNullOrEmpty(comando))
 {
 throw new Exception("Deve informar comando");
 }
 else
 {
 using (SqlConnection conexao = new SqlConnection(strConexao))
 {
 conexao.Open();
 SqlCommand comand = new SqlCommand(comando, conexao);
 comand.ExecuteNonQuery();
 }
 }
 }
 catch (Exception e)
 {
 System.Windows.Forms.MessageBox.Show("Erro:"+e.ToString());
 }
 }
 }

Nisso eu criei um fomulário com 10 componentes.

Os comandos:

public partial class Form1 : Form
 {
 public Form1()
 {
 InitializeComponent();
 }
private void btnBanco_Click(object sender, EventArgs e)
 {
 ofdBanco.ShowDialog(this);
 }
private void btnSair_Click(object sender, EventArgs e)
 {
 this.Close();
 }
private void ofdBanco_FileOk(object sender, CancelEventArgs e)
 {
 txtBanco.Text = ofdBanco.FileName;
 }
private void btnComando_Click(object sender, EventArgs e)
 {
 ofdComando.ShowDialog();
 }
private void ofdComando_FileOk(object sender, CancelEventArgs e)
 {
 txtComando.Text = ofdComando.FileName;
 }
private void btnExecuta_Click(object sender, EventArgs e)
 {
 Executa exe = new Executa(txtBanco.Text, txtComando.Text);
 exe.ComandoAoBanco();
 }
 }

=)

resolveu. Mas ainda falta tratamentos nessa aplicação para ficar completa.

  1. Deixe um comentário

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: