Ir para conteúdo

Arquivado

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

notax

Erro inserindo no banco de dados mysql

Recommended Posts

Seguinte:

 

Galera, to com o seguinte problema no meu código... quando tento inserir alguma coisa no banco de dados dá erro...

 

O engraçado é que ora aparece um erro ora outro... os dois erros que já apareceram foram:

 

 

Erro de leitura no banco de dados : You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server verison for the
right syntax to use near 'P' at line 1

 

 

e

 

 

System.IndexOutOfRangeException: Parameter index is out of range.
at MySql.Data.MySqlClient.MySqlParameterCollection.CheckIndex(Int32 index)
at MySql.Data.MySqlClient.MySqlParameterCollection.GetParameter(Int32 index)
at MySql.Data.MySqlClient.MySqlParameterCollection.get_Item(Int32 index)
at MySql.Data.MySqlClient.Statement.SerializeParameter(MySqlParameterCollecti
on parameters, MySqlPacket packet, String parmName, Int32 parameterIndex)
at MySql.Data.MySqlClient.Statement.InternalBindParameters(String sql, MySqlP
arameterCollection parameters, MySqlPacket packet)
at MySql.Data.MySqlClient.Statement.BindParameters()
at MySql.Data.MySqlClient.PreparableStatement.Execute()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior
)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteDbDataReader(CommandBehavior be
havior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandB
ehavior behavior)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[]
datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand co
mmand, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startR
ecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
at TCPServidor.Module1.TCPServidor.Main()

 

Alguem tem alguma dica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O primeiro erro significa que você errou na query do banco de dados, se puder postar aqui talvez eu possa ajudar.

 

O segundo é porque ele está lendo ou exibindo mais registros do que o array tem, tente colocar count -1 na sua função de exibição de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos por parte então, pode ser?


O primeiro erro... minha sintaxe está assim:





                'inserindo no BD
                Dim conn As New MySqlConnection
                Dim myCommand As New MySqlCommand
                Dim myAdapter As New MySqlDataAdapter
                Dim myData As New DataTable
                Dim SQL As String



                conn = New MySqlConnection

                conn.ConnectionString = "server=meuip;user id=root;password=minhasenha;database=gateway"

                SQL = "insert into pacotes (pacote) values ('" + clientdata + "')"

                Try

                    conn.Open()

                    Try

                        myCommand.Connection = conn

                        myCommand.CommandText = SQL

                        myAdapter.SelectCommand = myCommand

                        myAdapter.Fill(myData)

                        Dim datagrid1

                        DataGrid1.DataSource = myData

                    Catch myerro As MySqlException

                        MsgBox("Erro de leitura no banco de dados : " & myerro.Message)

                    End Try


                    MsgBox("Conexão aberta com sucesso")

                    conn.Close()

                Catch myerro As MySqlException

                    MsgBox("Erro ao conectar com o Banco de dados : " & myerro.Message)

                Finally

                    conn.Dispose()

                End Try

 

Eu já referenciei o Mysql.data... no entanto um tal de v4... isso seria referente ao Mysql 4? Pq pode estar aí o erro... eu estou usando mysql 5...

 

Pode ser por aí?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você baixou agora o mysql isso não deve ser problema.

 

Um erro ali é que você não deu nenhum tipo para o datagrid1

 

 

Dim datagrid1 As DatagridView

 

Aparentemente está tudo certo, veja se isto corrige, se não vamos para o outro erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe a demora...

 

Fiz a alteração, mas passou a apresentar esse erro:

 

Error 2 Type 'DatagridView' is not defined. \Module1.vb 86 42

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom... eu deixei assim:

 

 

                        Dim datagrid1 As System.Windows.Forms.DataGridView

Mas daí passou a apresentar o seguinte erro:

 

Error 2 Type 'System.Windows.Forms.DataGridView' is not defined. \Module1.vb 86 42 meuprojeto


Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi tua pergunta...

 

è uma aplicação console... na real um socket... os dados recebdos precisam ser armazenados num banco de dados...

 

é justamente a parte da inserção no bd que tá travando...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por isso que não funciona, não vai funcionar se você definir nada de objeto, então você tem que armazenar em um datatable e depois ler esse datatable para exibir os dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uhm... bem... olha... minha linguagem de programação tradicional é asp... to apanhando pra .net...

 

Pode me dar alguma ajuda mais específica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não pode usar tipos de controles, datagridviews nem nada disso, o banco de dados e a conexão em ASP e em NET é a mesma, então não tem quase nenhuma diferença na hora de conectar, só que pra exibir em um console application você precisa executar um reader e mostrar linha por linha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uhm... entendi! Óbvio! Desculpa...

 

Vou fazer uns testes na segunda - feira e te mantenho informado... mas basicamente posso deixar apenas a instrução de insert e dar um reader pra acompanhar como se fosse um debug... é isso né?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ixi... tirei praticamente tudo.. deixei apenas a rotina de inserção...

 

Agora passou a me dar esse erro:

Aplication cannot be started. Contact the Application vendor...

 

O debug ocorre perfeitamente... é só na hora de execução do projeto mesmo...

 

Se clico em mais detalhes aparece isso:

 

 

PLATFORM VERSION INFO
Windows : 6.0.6001.65536 (Win32NT)
Common Language Runtime : 4.0.30319.17929
System.Deployment.dll : 4.0.30319.17929 built by: FX45RTMREL
clr.dll : 4.0.30319.17929 built by: FX45RTMREL
dfdll.dll : 4.0.30319.17929 built by: FX45RTMREL
dfshim.dll : 4.0.41209.0 (Main.041209-0000)

SOURCES
Deployment url : file:///C:/Users/Public/listener/TCPServidor.application

IDENTITIES
Deployment Identity : TCPServidor.application, Version=1.0.0.3, Culture=neutral, PublicKeyToken=43a7d4d0ddff226b, processorArchitecture=x86

APPLICATION SUMMARY
* Installable application.

ERROR SUMMARY
Below is a summary of the errors, details of these errors are listed later in the log.
* Activation of C:\Users\Public\listener\TCPServidor.application resulted in exception. Following failure messages were detected:
+ Activation failed.
+ O sistema não pode encontrar o arquivo especificado. (Exception from HRESULT: 0x80070002)

COMPONENT STORE TRANSACTION FAILURE SUMMARY
No transaction error was detected.

WARNINGS
There were no warnings during this operation.

OPERATION PROGRESS STATUS
* [11/03/2013 14:00:57] : Activation of C:\Users\Public\listener\TCPServidor.application has started.
* [11/03/2013 14:00:57] : Processing of deployment manifest has successfully completed.

ERROR DETAILS
Following errors were detected during this operation.
* [11/03/2013 14:00:57] System.Deployment.Application.DeploymentException (Activation)
- Activation failed.
- Source: System.Deployment
- Stack trace:
at System.Deployment.Application.ComponentStore.ActivateApplication(DefinitionAppId appId, String activationParameter, Boolean useActivationParameter)
at System.Deployment.Application.SubscriptionStore.ActivateApplication(DefinitionAppId appId, String activationParameter, Boolean useActivationParameter)
at System.Deployment.Application.ApplicationActivator.Activate(DefinitionAppId appId, AssemblyManifest appManifest, String activationParameter, Boolean useActivationParameter)
at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)
--- Inner Exception ---
System.IO.FileNotFoundException
- O sistema não pode encontrar o arquivo especificado. (Exception from HRESULT: 0x80070002)
- Source: System.Deployment
- Stack trace:
at System.Deployment.Application.NativeMethods.CorLaunchApplication(UInt32 hostType, String applicationFullName, Int32 manifestPathsCount, String[] manifestPaths, Int32 activationDataCount, String[] activationData, PROCESS_INFORMATION processInformation)
at System.Deployment.Application.ComponentStore.ActivateApplication(DefinitionAppId appId, String activationParameter, Boolean useActivationParameter)

COMPONENT STORE TRANSACTION DETAILS
* Transaction at [11/03/2013 14:00:57]
+ System.Deployment.Internal.Isolation.StoreOperationSetDeploymentMetadata
- Status: Set
- HRESULT: 0x0
+ System.Deployment.Internal.Isolation.StoreTransactionOperationType (27)
- HRESULT: 0x0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa a demora... isso é só um estudo e outros jobs foram entrando e acabei tendo que os priorizar...

 

O erro que postei acima eu corrigi simplesmente desinstalando e reinstalando o app... bem, agora testei e aparece esse erro aqui:

 

 


System.IndexOutOfRangeException: Parameter index is out of range.
at MySql.Data.MySqlClient.MySqlParameterCollection.CheckIndex(Int32 index)
at MySql.Data.MySqlClient.MySqlParameterCollection.GetParameter(Int32 index)
at MySql.Data.MySqlClient.MySqlParameterCollection.get_Item(Int32 index)
at MySql.Data.MySqlClient.Statement.SerializeParameter(MySqlParameterCollecti
on parameters, MySqlPacket packet, String parmName, Int32 parameterIndex)
at MySql.Data.MySqlClient.Statement.InternalBindParameters(String sql, MySqlP
arameterCollection parameters, MySqlPacket packet)
at MySql.Data.MySqlClient.Statement.BindParameters()
at MySql.Data.MySqlClient.PreparableStatement.Execute()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior
)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteDbDataReader(CommandBehavior be
havior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandB
ehavior behavior)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[]
datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand co
mmand, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startR
ecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
at MeuProjeto.Module1.MeuProjeto.Main()

 

Tem alguma ideia do que pode ser?

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.