Jump to content

[VB.Net 2005] Um problema com Strings Publicas


watt

Recommended Posts

Boas pessoal!

tenho estado com um problema muito estranho... tenho um modulo com umas strings Publicas  por exemplo user, então acontece que no formulario1 dou um valor ao user (user="watt"), depois no formulario2 tento fazes uma sintax em sql usando a pariavel.

sql="Select * from utilizadores where user = ' & user & " '; ";

o que é que aconce ... a sintax fica incompleta

Select * from utilizadores where user ='watt

falta a '; do fim ... ou seja ... falta sempre td o que vem a seguir á variavel ... alguem sabe pq é que me aconte isto ??

Link to comment
Share on other sites

tenho

sql="Select * from utilizadores where user = ' & user & " '; "

só que lá em cima pus no fim um ; por acidente.

Faz uma coisa... copia exactamente o codigo para aki...

é k falta mesmo umas " aspas

sql="Select * from utilizadores where user = ' (aki ") & user & " '; "

Fikem Bem!!!Miguel Duarte - (SoulOnFire)O meu BLOG - XAML E WPF - http://wpfpt.wordpress.com/

Link to comment
Share on other sites

neste momento estou confuso, não sei se o problema é do servidor ou cliente... é o seguinte o cliente manda a sintax em sql para o server, e depois este responde o resultado.

Codigo do Cliente

- no moduluo

Public user as string

- no form de login

se for aceite

user= txtbuser.text

- no formulario2

dim

sql="Select * from utilizadores where user = ' & user & " '; "

        Dim msg As [byte]() = Encoding.UTF8.GetBytes(sql)

        stream.Write(msg, 0, msg.Length)

--- Mandou para o server, agora no server tenho -----------------------

stream.Read(bytes, 0, n)

dados = Encoding.UTF8.GetString(bytes)

depois qd vou correr o comando diz erro na sintax, por causa de uma aspa q não percebo... no debug, realmente falta uma aspa no fim.

n sei onde se perde mas agora n sei se o problema é no envio ou não

Link to comment
Share on other sites

épa... escrevi mal akino forum, pq noprograma tenho essa aspa

o cliente enviou:

"Select * from utilizadores where user = '" & user & " ' and pass='" & passw & "'; "

o server qd vai executar diz:

comando já transformado - "Select * from users where user = 'x' and password = '7694f4a66316e53c8cdd9d9954bd611d';

MySql.Data.MySqlClient.MySqlException = {"#42000Você tem um erro de sintaxe no seu SQL próximo a ';' na linha 1"}

Link to comment
Share on other sites

mas já está lá.o que eu estou a reparar é que sp q tiro dados da stream, nunca trabalhão bem, e as string ao que parecetêm deestar entr aspas,e as retiradas da stream só têm a 1º aspa... é o q repareri no debug.

e se tentar juntar mais kalker coisa á string com um & ou +, ele ignora o que vem depois a estes 2 caracteres.

Link to comment
Share on other sites

eu não faço os meus selects assim, e ainda por cima os mais complexos, uso parâmetros que depois o controlador se encarrega de substituir

faço tipo isto :

sql = "SELECT * " & _

        "FROM RAT_PLA_TAR_05 " & _

          "WHERE RPT_NUM_TAR like :pRPT_NUM_TAR AND " & _

          "      RPT_DES_TAR like :pRPT_DES_TAR AND " & _

          "((RSE_RDI_RDI_COD_DIR like :pRSE_RDI_RDI_COD_DIR) OR (RSE_RDI_RDI_COD_DIR IS NULL)) AND " & _

          "((RSE_RSE_COD_SER like :pRSE_RSE_COD_SER) OR (RSE_RSE_COD_SER IS NULL)) AND " & _

          "((RGR_RGR_USER like :pRGR_RGR_USER) OR (RGR_RGR_USER IS NULL)) AND " & _

          "      PRO_RPO_COD_PRO like :pPRO_RPO_COD_PRO "

        Dim cmd As New OracleCommand(sql, conn)

        Dim da As New OracleDataAdapter(cmd)

        Dim ds As New DataSet

        Dim myCol As New DataColumn

        Dim myRow As DataRow

        cmd.Parameters.Add("pRPT_NUM_TAR", rs.RPT_NUM_TAR)

        cmd.Parameters.Add("pRPT_DES_TAR", rs.RPT_DES_TAR)

        cmd.Parameters.Add("pPRO_RPO_COD_PRO", rs.PRO_RPO_COD_PRO)

        cmd.Parameters.Add("pRSE_RSE_COD_SER", rs.RSE_RSE_COD_SER)

        cmd.Parameters.Add("pRSE_RDI_RDI_COD_DIR", rs.RSE_RDI_RDI_COD_DIR)

        cmd.Parameters.Add("pRGR_RGR_USER", rs.RGR_RGR_USER)

        Try

            da.Fill(ds, "RAT_PLA_TAR_05")

            For Each myRow In ds.Tables(0).Rows

                For Each myCol In ds.Tables(0).Columns

                    rs.fill(myCol.ColumnName, myRow(myCol).ToString())

                Next

            Next

            Return ds.Tables(0).Rows.Count.ToString

        Catch ex As Exception

            Return ex.Message.ToString

        End Try

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
×
×
  • 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.