Jump to content

Database Insert


antidzrt
 Share

Recommended Posts

Ainda não atinei com as bases de dados  :wallbash: 

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'caminho da base de dados
        Dim strConn As String
        strConn = WebConfigurationManager.ConnectionStrings("gesviaConnectionString").ConnectionString
        'comando de sql que se pretende, neste caso for para inserir registo
        Dim SQl As String = "INSERT INTO Principal ,Marca ([Nome],[servico],[n_mec],[Categoria],[Ano],[n_selo],[marca1],[marca2],[marca3],[marca4],[marca5],[marca6],[marca7],[marca8],[marca9],[matricula1],[matricula2],[matricula3],[matricula4],[matricula5],[matricula6],[matricula7],[matricula8],[matricula9],[ano1],[ano2],[ano3],[ano4],[ano5],[ano6],[ano7],[ano8],[ano9])Values(nome,serviço,n_mec,Categoria,n_selo,marca1,marca2,marca3,marca4,marca5,marca6,marca7,marca8,marca9,matricula1,matricula2,matricula3,matricula4,matricula5,matricula6,matricula7,matricula8,matricula9,ano1,ano2,ano3,ano4,ano5,ano6,ano7,ano8,ano9);"

        'conecçao a bd
        Dim connection As New SqlConnection(strConn)
        'definir uma variavel para guardar os valores que se pretende enviar para a base de dados
        Dim valores As New SqlCommand(SQl, connection)
        valores.Parameters.Add("@Nome", SqlDbType.VarChar).Value = Nome.Text
        valores.Parameters.Add("@Servico", SqlDbType.VarChar).Value = Servico.Text
        valores.Parameters.Add("@n_mec", SqlDbType.Int).Value = n_mec.Text
        valores.Parameters.Add("@Categoria", SqlDbType.VarChar).Value = Categoria.Text
        valores.Parameters.Add("@n_selo", SqlDbType.Int).Value = n_selo.Text
        valores.Parameters.Add("@marca1", SqlDbType.VarChar).Value = Marca1.SelectedItem.Value
        valores.Parameters.Add("@marca2", SqlDbType.VarChar).Value = Marca3.SelectedItem.Value
        valores.Parameters.Add("@marca3", SqlDbType.VarChar).Value = Marca3.SelectedItem.Value
        valores.Parameters.Add("@marca4", SqlDbType.VarChar).Value = Marca4.SelectedItem.Value
        valores.Parameters.Add("@marca5", SqlDbType.VarChar).Value = Marca5.SelectedItem.Value
        valores.Parameters.Add("@marca6", SqlDbType.VarChar).Value = Marca6.SelectedItem.Value
        valores.Parameters.Add("@marca7", SqlDbType.VarChar).Value = Marca7.SelectedItem.Value
        valores.Parameters.Add("@marca8", SqlDbType.VarChar).Value = Marca8.SelectedItem.Value
        valores.Parameters.Add("@marca9", SqlDbType.VarChar).Value = Marca9.SelectedItem.Value
        valores.Parameters.Add("@matricula1", SqlDbType.VarChar).Value = Matricula1.Text
        valores.Parameters.Add("@matricula2", SqlDbType.VarChar).Value = Matricula2.Text
        valores.Parameters.Add("@matricula3", SqlDbType.VarChar).Value = Matricula3.Text
        valores.Parameters.Add("@matricula4", SqlDbType.VarChar).Value = Matricula4.Text
        valores.Parameters.Add("@matricula5", SqlDbType.VarChar).Value = Matricula5.Text
        valores.Parameters.Add("@matricula6", SqlDbType.VarChar).Value = matricula6.Text
        valores.Parameters.Add("@matricula7", SqlDbType.VarChar).Value = matricula7.Text
        valores.Parameters.Add("@matricula8", SqlDbType.VarChar).Value = matricula8.Text
        valores.Parameters.Add("@matricula9", SqlDbType.VarChar).Value = matricula9.Text
        valores.Parameters.Add("@Ano1", SqlDbType.Int).Value = Ano1.SelectedItem.Value
        valores.Parameters.Add("@Ano2", SqlDbType.Int).Value = Ano2.SelectedItem.Value
        valores.Parameters.Add("@Ano3", SqlDbType.Int).Value = Ano3.SelectedItem.Value
        valores.Parameters.Add("@Ano4", SqlDbType.Int).Value = Ano4.SelectedItem.Value
        valores.Parameters.Add("@Ano5", SqlDbType.Int).Value = Ano5.SelectedItem.Value
        valores.Parameters.Add("@Ano6", SqlDbType.Int).Value = Ano6.SelectedItem.Value
        valores.Parameters.Add("@Ano7", SqlDbType.Int).Value = Ano7.SelectedItem.Value
        valores.Parameters.Add("@Ano8", SqlDbType.Int).Value = Ano8.SelectedItem.Value
        valores.Parameters.Add("@Ano9", SqlDbType.Int).Value = Ano9.SelectedItem.Value


        connection.Open()

        Dim x As Integer = valores.ExecuteNonQuery()

        If x < 1 Then
            MsgBox("Pedido registado")
        End If

        ' Fecha a ligação e limpa as variáveis
        connection.Close()
        connection = Nothing
        valores = Nothing

    End Sub

Dame um erro quando vou a enserir

Input string was not in a correct format

Line 58:        connection.Open()

Line 59:

Line 60:        Dim x As Integer = valores.ExecuteNonQuery()

Line 61:

Line 62:        If x < 1 Then

    Line: 60

JA tive no google a pesquisar mas o inglês e muito mau

Link to comment
Share on other sites

Assim é pouco complicado descobrir. Vais ter de fazer um debug. De qualquer das formas, assim à primeira vista, vê se estás a enviar só númerico aqui:

        valores.Parameters.Add("@n_mec", SqlDbType.Int).Value = n_mec.Text

        valores.Parameters.Add("@n_selo", SqlDbType.Int).Value = n_selo.Text

Oracle Certified Professional - AdministraçãoOracle Certified Professional - Pl/sqlMCPD - Microsoft Certified Professional DeveloperMCTS - Microsoft Certified Technology Specialist

Link to comment
Share on other sites

Penso que ja sei qual seja o problema os campos nao tão todos preenchidos so tenho 1 matricula visivel, as outras são para quem tem mais que um carro e não tao visiveis

mas ao preencher todos os campos dá-me outro erro

Incorrect syntax near ','.

Line 58:        connection.Open()

Line 59:

Line 60:        Dim x As Integer = valores.ExecuteNonQuery()

Line 61:

Line 62:        If x < 1 Then

    Line: 60

Link to comment
Share on other sites

O problema indicado está ainda antes disso tudo:

INSERT INTO Principal ,Marca

Ou estás a inserir para a tabela Principal, ou estás a inserir na marca... em que ficamos? 😄

Para além disso, para usares os parâmetros na query, o nome tem de estar seguido de um "@".

Por exemplo:

VALUES(@nome,@servico)

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Eu percebi que o quisesses fazer.

A Microsoft é que não gosta de ti.

Ou fazes um trigger para insert numa das tabelas, para que escreva na outra, ou executas a query duas vezes.

INSERT não prevê mais do que uma tabela.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

O problema indicado está ainda antes disso tudo:

INSERT INTO Principal ,Marca

Ou estás a inserir para a tabela Principal, ou estás a inserir na marca... em que ficamos? 🙂

Para além disso, para usares os parâmetros na query, o nome tem de estar seguido de um "@".

Por exemplo:

VALUES(@nome,@servico)

Convém leres o que as pessoas te tentam dizer antidzrt

O teu insert está mal feito.

Como o ribeiro disse, tens de ter algo assim:

Dim query As String = "INSERT INTO TabelaClientes([cliente], [morada], [telefone], [Email]) VALUES (@cliente, @morada, @telefone, @email);"

Depois, quando fazes esta linha de código:

Dim x As Integer = valores.ExecuteNonQuery()

        If x < 1 Then
            MsgBox("Pedido registado")
        End If

Está mal, pelo menos a mensagem lol..

O ExecuteNonQuery serve para retornar o número de registos afectados. Portanto, o teu código deveria ser:

Dim x As Integer = valores.ExecuteNonQuery()

        If x < 1 Then
            MsgBox("Erro ao registar!")
         Else
            Msgbox("Registado com sucesso!")
        End If

EDIT: Para explicar melhor o último parágrafo: Se 'x' for < (menor) do que 1 (logo é igual a 0) significa que não conseguiu inserir com sucesso, caso contrário, se for > (maior) do que 1 então regista com sucesso.

Link to comment
Share on other sites

Eu li... foi logo a 1 coisa que mudei  🙂

vou mudar a Msgbox  😞

O meu problema e que não sei onde e que heide de por o outro Insert pa fazer a outra query

Agora tenho assim o codigo

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        'caminho da base de dados
        Dim strConn As String
        strConn = WebConfigurationManager.ConnectionStrings("gesviaConnectionString").ConnectionString
        'comando de sql que se pretende, neste caso for para inserir registo
        Dim SQl As String = "INSERT INTO Principal  ([Nome],[servico],[n_mec],[Categoria],[Ano],[n_selo])Values(@nome,@servico,@n_mec,@Categoria,@n_selo);"
        'conecçao a bd
        Dim connection As New SqlConnection(strConn)
        'definir uma variavel para guardar os valores que se pretende enviar para a base de dados
        Dim valores As New SqlCommand(SQl, connection)
        valores.Parameters.Add("@Nome", SqlDbType.VarChar).Value = Nome.Text
        valores.Parameters.Add("@Servico", SqlDbType.VarChar).Value = Servico.Text
        valores.Parameters.Add("@n_mec", SqlDbType.Int).Value = n_mec.Text
        valores.Parameters.Add("@Categoria", SqlDbType.VarChar).Value = Categoria.Text
        valores.Parameters.Add("@n_selo", SqlDbType.Int).Value = n_selo.Text

        connection.Open()

        Dim x As Integer = valores.ExecuteNonQuery()

        If x < 1 Then
            MsgBox("Erro ao registar!")
        Else
            MsgBox("Registado com sucesso!")

        End If

        ' Fecha a ligação e limpa as variáveis
        connection.Close()
        connection = Nothing
        valores = Nothing
    End Sub
Link to comment
Share on other sites

Faz antes isto:

Sub Query1()
'caminho da base de dados
        Dim strConn As String
        strConn = WebConfigurationManager.ConnectionStrings("gesviaConnectionString").ConnectionString
        'comando de sql que se pretende, neste caso for para inserir registo
        Dim SQl As String = "INSERT INTO Principal  ([Nome],[servico],[n_mec],[Categoria],[Ano],[n_selo])Values(@nome,@servico,@n_mec,@Categoria,@n_selo);"
        'conecçao a bd
        Dim connection As New SqlConnection(strConn)
        'definir uma variavel para guardar os valores que se pretende enviar para a base de dados
        Dim valores As New SqlCommand(SQl, connection)
        valores.Parameters.Add("@Nome", SqlDbType.VarChar).Value = Nome.Text
        valores.Parameters.Add("@Servico", SqlDbType.VarChar).Value = Servico.Text
        valores.Parameters.Add("@n_mec", SqlDbType.Int).Value = n_mec.Text
        valores.Parameters.Add("@Categoria", SqlDbType.VarChar).Value = Categoria.Text
        valores.Parameters.Add("@n_selo", SqlDbType.Int).Value = n_selo.Text

        connection.Open()

        Dim x As Integer = valores.ExecuteNonQuery()

        If x < 1 Then
            MsgBox("Erro ao registar!")
        Else
            MsgBox("Registado com sucesso!")

        End If

        ' Fecha a ligação e limpa as variáveis
        connection.Close()
        connection = Nothing
        valores = Nothing
End Sub

Sub Query2()
xpto
xpto
End Sub

Metes aqui o código igual à Query1, mas alteras os campos.

Depois no button1, metes:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Query1()
Query2()

Desta forma fica tudo mais organizado e de melhor percepção.

Link to comment
Share on other sites

Muito obrigado bioshock  🙂

isto agpra dame um pequeno erro na msgbox

Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation. Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service application.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation. Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service application.

Source Error:

Line 32:            MsgBox("Erro ao registar!")

Line 33:        Else

Line 34:            MsgBox("Registado com sucesso!")

Line 35:

Line 36:        End If

Pelo que eu percebi embora teja a fazer o codigo em VB.net  em isto e aspx logo a msgbox nao dá certo?  É invisivel ao utilzador

Pesquisei mais um bocadinho e encontrei isto http://www.essentialobjects.com/Products/EOWeb/MsgBox.aspx

Link to comment
Share on other sites

Isso devia de funcionar, não tem nada haver com a msgbox, a não ser que tu estejas a fazer mais algum código para além dessas queries..mas só assim por via das dúvidas faz o seguinte:

Troca msgbox por "MessageBox.Show("texto") e depois mete isto:

Try
     código da query
Catch ex as exception
Messagebox.Show(ex.toString)
End try

Corre a aplicação e vê que erro é que dá.

Link to comment
Share on other sites

Nada disso, lol.

O que eu te disse para fazeres foi:

Sub Query1()
Try
'caminho da base de dados
        Dim strConn As String
        strConn = WebConfigurationManager.ConnectionStrings("gesviaConnectionString").ConnectionString
        'comando de sql que se pretende, neste caso for para inserir registo
        Dim SQl As String = "INSERT INTO Principal  ([Nome],[servico],[n_mec],[Categoria],[Ano],[n_selo])Values(@nome,@servico,@n_mec,@Categoria,@n_selo);"
        'conecçao a bd
        Dim connection As New SqlConnection(strConn)
        'definir uma variavel para guardar os valores que se pretende enviar para a base de dados
        Dim valores As New SqlCommand(SQl, connection)
        valores.Parameters.Add("@Nome", SqlDbType.VarChar).Value = Nome.Text
        valores.Parameters.Add("@Servico", SqlDbType.VarChar).Value = Servico.Text
        valores.Parameters.Add("@n_mec", SqlDbType.Int).Value = n_mec.Text
        valores.Parameters.Add("@Categoria", SqlDbType.VarChar).Value = Categoria.Text
        valores.Parameters.Add("@n_selo", SqlDbType.Int).Value = n_selo.Text

        connection.Open()

        Dim x As Integer = valores.ExecuteNonQuery()

        If x < 1 Then
            Messagebox.Show("Erro ao registar!")
        Else
            Messagebox.Show("Registado com sucesso!")

        End If

        ' Fecha a ligação e limpa as variáveis
        connection.Close()
        connection = Nothing
        valores = Nothing
Catch ex as exception
Messagebox.Show(ex.ToString)
End try
End Sub
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.