MULTREADER MYSQL

MAXCIM 12/10/2013 15:50:44
#429966
olá amigos,

Estou passando a conexão do meu projeto de ODBCconnection + driver MYSQL ODBC 5.1 para mysqlconnection + driver mysql.net
porem estou tento alguns problemas em abrir varios datareaders em serie. recebo a mensagem abaixo:

[Ô]There is already an open DataReader associated with this Connection which must be closed first.[Ô]

alguem sabe como configurar o mysql para aceitar mais de um datareader dentro da mesma conexão?
no sqlverver tem a opção de multreader [Ô]MultipleActiveResultSets=true[Ô] alguem sabe de algo no mysql?

segue código:
Dim reader As MySqlDataReader
Dim reader2 As MySqlDataReader
Dim cmd As New MySqlCommand([Ô]SHOW TABLES[Ô], conn)
Try
reader = cmd.ExecuteReader()
While (reader.Read())
Dim Tabela As String = reader.GetString(0)
Dim cmd2 As New MySqlCommand([Ô]SHOW CREATE TABLE '[Ô] & Tabela & [Ô]';[Ô], conn)
reader2 = cmd2.ExecuteReader() [ô] ---> aqui dá o erro.
End While


desde já agradeço.
MAXCIM 30/10/2013 08:40:08
#430519
alguém???
KERPLUNK 30/10/2013 09:46:23
#430524
Você não pode ter múltiplos datareaders associados à uma mesma conexão. Você pode criar clones dessa conexão ou fazer a leitura de um datareader por vez.
MITSUEDA 31/10/2013 07:55:58
#430566
Como você chama a conexão?
OCELOT 31/10/2013 08:43:30
#430569
Abra uma conexão para cada DataReader, mesmo no SQL Server com o MultipleActiveResultSets ele não roda exatamente ao mesmo tempo mais de um comando, dependendo do comando ele na verdade interrompe um para executar o outro, se forem inserts e updates por exemplo ele vai bloquear até estes comandos terminarem para voltar a executar um select, então muitas vezes é melhor usar duas conexões mesmo no SQL Server
MAXCIM 31/10/2013 08:55:31
#430570
oi Mitsueda, uso esse modo para conctar.

Dim conn As MySqlConnection
[ô]driver mysql 6.6.5.0
private sub opem_conexao
If Not conn Is Nothing Then conn.Close()

Dim connStr As String
connStr = String.Format([Ô]server={0};user id={1}; password={2}; database=mysql; pooling=false[Ô], _
server.Text, userid.Text, password.Text )

Try
conn = New MySqlConnection(connStr)
conn.Open()

GetDatabases()
Catch ex As MySqlException
MessageBox.Show([Ô]Error connecting to the server: [Ô] + ex.Message)
End Try
End Sub
MAXCIM 31/10/2013 09:08:32
#430571
há vantagens em mudar da conexão com driver ODBC 5,1 para driver mysql .NET 6.6.5.0?

com o ODBC eu abro vários readers ao mesmo tempo, e posso fazer portabilidade de tipo de base de dados.
quais seriam meus ganhos em relação ao driver mysql.NET?

MARCELOSN 31/10/2013 11:22:11
#430583
Resposta escolhida
bom dia


segue alguns link que podem ajudar

ADO .NET – Executando múltiplos comandos em uma única conexão
http://imasters.com.br/framework/dotnet/ado-net-executando-multiplos-comandos-em-uma-unica-conexao/



Executando múltiplas consultas usando um objeto Command
Acesse o code-behind da página pressionando a tecla F7 e escreva as linhas de código abaixo.

protected void Page_Load(object sender, EventArgs e)

{

try

{

if (!Page.IsPostBack)

this.ExecutarMultiplaConsulta();

}

catch (Exception ex)

{

ScriptManager.RegisterStartupScript(this, this.GetType(), [Ô]erro[Ô],

string.Format([Ô]alert([ô]{0}[ô]);[Ô], ex.Message), true);

}

}

private void ExecutarMultiplaConsulta()

{

using (SqlConnection con =

new SqlConnection(ConfigurationManager.ConnectionStrings[[Ô]connStringSqlServer[Ô]].ToString()))

{

using (SqlCommand cmd =

new SqlCommand([Ô]SELECT * FROM Products; SELECT * FROM Categories[Ô], con))

{

cmd.CommandType = System.Data.CommandType.Text;

con.Open();

SqlDataReader dr = cmd.ExecuteReader();

//Preencher o primeiro ListBox com os produtos

while (dr.Read())

{

lstProduto.Items.Add(dr[[Ô]ProductName[Ô]].ToString());

}

//Obter o resultado da próxima query

dr.NextResult();

//Preencher o segundo ListBox com as categorias

while (dr.Read())

{

lstCategoria.Items.Add(dr[[Ô]CategoryName[Ô]].ToString());

}

}

}

}

Antes de tudo, precisei criar uma connection string apontando para um servidor SQL Server local. Segue a configuração do arquivo web.config.

<connectionStrings>

<add name=[Ô]connStringSqlServer[Ô] connectionString=[Ô]Data Source=.\SQLEXPRESS; Initial Catalog=Northwind; Trusted_Connection=True;[Ô] providerName=[Ô]System.Data.SqlClient[Ô]/>

</connectionStrings>

foi executado duas consultas no banco de dados, usando os mesmos objetos que seriam utilizados para uma única consulta.
Tópico encerrado , respostas não são mais permitidas