Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
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í?
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.
Desculpe a demora...
Fiz a alteração, mas passou a apresentar esse erro:
Error 2 Type 'DatagridView' is not defined. \Module1.vb 86 42
Isso é uma aplicação desktop ou web?
Desktop
Tente definir com o caminho completo: system.Windows.Forms.DataGridView
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
Isso é uma classe visual? Ou é um módulo?
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...
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
Uhm... bem... olha... minha linguagem de programação tradicional é asp... to apanhando pra .net...
Pode me dar alguma ajuda mais específica?
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.
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é?
Sim, você usa um for para exibir cada linha que ele for lendo.
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 INFOWindows : 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
Cara, isso nunca aconteceu comigo... Minha primeira ação seria reiniciar o projeto com um windows form.
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?
Resolvido... era um problema na tabela do bd... campo tamanho incompativel... corrigi e funcionou...
valewwww
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.