Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Slacker

Melhor maneira de fazer Inserts e Select C#

Recommended Posts

Olá prezados,Bom, estou desenvolvendo uma aplicação Windows Form, e uso uma conexão com banco do SQL Server 2005 Express.E estou fazendo o seguinte:Para os inserts:OleDbConnection objConnection = null;OleDbCommand objCmd = null;string strSQL;string strConnection = "Provider=SQLOLEDB;Server=MEDEIROS\\SQLEXPRESS;Database=banco;User Id=bordotti;Password=medeiros;";objConnection = new OleDbConnection(strConnection);objConnection.ConnectionString = strConnection;objConnection.Open();strSQL = "INSERT INTO cadastro (codigo,nome,idade,data) VALUES (1,2,3,getDate())";try{objCmd = new OleDbCommand(strSQL, objConnection);objCmd.ExecuteNonQuery();MessageBox.Show("Informação incluída com sucesso!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information);}catch{MessageBox.Show("erro", "erro");} O código acima funciona perfeitamente, criei ele só para fazer um teste E utilizo para select :OleDbConnection objConnection = null;OleDbCommand objCmd = null;string strSQL;string strConnection = "Provider=SQLOLEDB;Server=MEDEIROS\\SQLEXPRESS;Database=banco;User Id=bordotti;Password=medeiros;";objConnection = new OleDbConnection(strConnection);objConnection.ConnectionString = strConnection;strSQL = "select * from cadastro";objCmd = new OleDbCommand(strSQL,objConnection);OleDbDataAdapter dataAdapter = new OleDbDataAdapter(strSQL,objConnection);try{objConnection.Open();ler = objCmd.ExecuteReader();if (ler.HasRows){while (ler.Read()){//this.listBox1.Items.Add(dataReader.GetString(3));MessageBox.Show(ler.GetString(1), "Resultado Data Reader");}}else{MessageBox.Show("Não achou nada", "Ae!");}}catch{}finally{} Também funciona perfeitamente, sem problema algum. Más minha dúvida é a seguinte, percebi que tenho que escrever várias linhas de códigos para se fazer um procedimento, e utilizar vários recursos do OleDb. Gostaria de saber se há uma maneira mais prática para se fazer esses procedimentos ou com menos linhas de código? Não sei se alguém aqui programa em java, más la costumo criar a conexão para inicar com o programa, e só manipulo os comandos SQL depois. Há maneira de fazer isso no C#?E outra dúvida que no começo foi o que mais me confundiu é, como saber quando devo utilizar DataReader, DataAdapter, DataBindings, OleDbcommand, enfim, esses inúmeros recursos que há para conexão, nunca sei qual tem que usar com qual, existe alguma regra ou definição para isso? Me disseram ( e eu já tentei porém sem sucesso) para utilizar o SQL Client nativo do SQL Server com o visual studio para fazer a conexão, eu fiz a conexão porém não sei como utilizar aquele DataSet, e outros recursos por exemplo para inserir num botão para fazer o procedimento de Insert no banco. Se alguém puder me dar uma luz, com algumas explicações e exemplos eu agradeço.Obrigado desde já pessoalAbraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo,

 

Faça uma camada de acesso aos dados. Isso facilita bastante as coisas.

Normalmente programo em VB.Net no asp.net com access ou mysql.

Tenho uma classe com as subs para fazer os inserts e deletes e functions para retornar Datasets ou datareaders.

 

Classe de acesso aos dados:

 

Exemplo parcial

Namespace mDataPublic Class myData			Public Sub m_commDB(ByVal strSQL As String)			Dim conexao As New MySqlConnection(strconnection)			Dim ComandoDB As New MySqlCommand(strSQL, conexao)			Try				conexao.Open()				ComandoDB.ExecuteNonQuery()			Catch ex As MySqlException			  ' Trata a exceção			End Try			conexao.Close()		End Sub		Public Function mDataSet(ByVal SQL As String) As DataSet			Dim DS As New DataSet			Dim MyCommand As New MySqlDataAdapter(SQL, conn)			Try				MyCommand.Fill(DS, "Table1")				Return DS			Catch ex As MySqlException				Return Nothing			Finally				DS.Dispose()			End Try		End FunctionEnd ClassEnd Namespace
Assim nas páginas que tenho que acessar o banco resolvo a questão em apenas uma ou duas linhas sem me preocupar em criar conexão, etc:

 

'Cria o objetoPublic mData As New mData.myDataSub InsereCliente()Dim SQL as String="INSERT INTO _clientes ........")mData.m_commDB(SQL)End SubSub MostraClientes()Dim DS As New DataSetDS =mData.mDataSet("SELECT idcliente, nome FROM _clientes ORDER BY nome")'.....End Sub
Existem várias formas de criar sua camada, faça uma busca por DAL e .Net que se encontra bastante material.

Compartilhar este post


Link para o post
Compartilhar em outros sites

a melhor maneira é não utilizar OleDb ( pois é genérico e um Cast para o banco de dados correto é efetuado.)Por isso utilize SqlClient ou OracleClient que será mais rápido.[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

estou utilizando o VWDEE (Visual Web Developer Express Edition) e o SSMSE (Sql Server Management Studio Express) e n estou tendo mto trabalho.São bem simples e tem inumeros recursos que facilitam o trabalho

Compartilhar este post


Link para o post
Compartilhar em outros sites

estou utilizando o VWDEE (Visual Web Developer Express Edition) e o SSMSE (Sql Server Management Studio Express) e n estou tendo mto trabalho.São bem simples e tem inumeros recursos que facilitam o trabalho

acho q a dúvida dele era referente a código... :unsure: mas tudo bem http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.