pessoal,
estou tentando usar o sql server 2008 com c#, e acontece o seguinte:
aqui tenho a classe de conexão
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data; namespace protocolo { class ConexaoSql { public String stringConnection; private SqlConnection sqlConn; private SqlTransaction sqlTrans = null; private SqlDataAdapter sqlDA; public SqlDataAdapter SqlDA { get { return sqlDA; } set { sqlDA = value; } } public SqlDataReader fbDR; public ConexaoSql(String Conn) { this.stringConnection = Conn; sqlConn = new SqlConnection(stringConnection); } public void iniciaDataAdapter(String instrucaoSQL) { sqlDA = new SqlDataAdapter(instrucaoSQL, this.sqlConn); sqlDA.SelectCommand.Parameters.Clear(); } public Boolean abrirConexao() { try { this.sqlConn.Open(); return true; } catch (Exception ex) { return false; } } public Boolean fecharConexao() { try { this.sqlConn.Open(); return true; } catch (Exception ex) { return false; } } public Boolean executarSQL(int tipo) { this.sqlConn.Open(); this.sqlTrans = this.sqlConn.BeginTransaction(); if (tipo == 1) { try { sqlDA.SelectCommand.Transaction = this.sqlTrans; sqlDA.SelectCommand.ExecuteNonQuery(); this.sqlTrans.Commit(); return true; } catch (Exception ex) { this.sqlTrans.Rollback(); return false; } } else if (tipo == 2) { try { sqlDA.SelectCommand.Transaction = this.sqlTrans; fbDR = sqlDA.SelectCommand.ExecuteReader(); return true; } catch (Exception ex) { return false; } } else { return false; } } } }
aqui tenho o comando de login
namespace protocolo { public partial class Form1 : Form { private ConexaoSql ConSql; private string strConexao = @"Data Source=(local)\sqlexpress;Initial Catalog=cartorio.sdf;Integrated Security=True"; private DataSet DS; public Form1() { InitializeComponent(); } private void btnEntrar_Click(object sender, EventArgs e) { ConSql = new ConexaoSql(strConexao); ConSql.iniciaDataAdapter("select count(*) from usuario where usuario=@usuario and senha=@senha"); ConSql.SqlDA.SelectCommand.Parameters.Add("@usuario", SqlDbType.VarChar).Value = txtUsuario.Text; ConSql.SqlDA.SelectCommand.Parameters.Add("@senha", SqlDbType.VarChar).Value = txtSenha.Text; ConSql.abrirConexao(); int i = (int)ConSql.SqlDA.SelectCommand.ExecuteScalar(); if (i > 0) { MessageBox.Show("Sistema liberado!!"); txtUsuario.Clear(); txtSenha.Clear(); this.Hide(); //formPrincipal formprincipal = new formPrincipal(); //formprincipal.ShowDialog(); this.Visible = false; this.Dispose(); this.Close(); Application.Exit(); } else { lblError.Text = "Acesso não autorizado!!"; } } } }
Quando vou tentar logar aparece o seguinte erro:
"ExecuteScalar requer uma conexão aberta e disponível. O estado atual da conexão é fechada".
Já revisei o código, mas infelizmente não sei onde está o erro.
Será que alguém poderia me ajudar.
obrigado.
gustavo