locked
There was an error parsing the query RRS feed

  • Pergunta

  • Olá

    Estou tentando fazer um simple 'insert' em uma tabela no sql server ce 4 que tem um campo nText

    Contudo em alguns momentos ele me retorna esse erro:

    "There was an error parsing the query. [Token line number = 1, Token line offset = 123...]"

    O erro não está na expressão sql, visto que quando adiciono coisas pequenas ele vai com toda tranquilidade.

    Esse erro só aparece quando tento adicionar muitos caracteres(coisa de 14000). Contudo li que o campo nText suporta até 65000. Por isso estou sem saber o que pode estar acontecendo.

    Para dar maiores detalhes, segue abaixo a expressão de como estou executando o insert.

    Desde já agradeço.

    Obrigado.

    SqlCeCommand objCmm = new SqlCeCommand(string.Format(
    "INSERT INTO tblNewsUMELF(strTitle, strURLPhoto, strNews, strCategory) VALUES('{0}', '{1}', '{2}', '{3}')"
    , title, "0", news, category), objCnn.objCnn);
    objCnn.openCnn();
    objCmm.ExecuteNonQuery();
    objCnn.Close();
    
    obs.: title, "0", news e category são strings contendo os valores para
    serem adicionados na tabela.
    


    • Movido João_ Prado segunda-feira, 12 de dezembro de 2011 16:15 Movido por se tratar unicamente de problema de query (De:ASP.NET MVC)
    segunda-feira, 12 de dezembro de 2011 15:40

Respostas

  • Tente utilizar parâmetros ao invés de string.Format para inserir o texto:

    "INSERT INTO tblNewsUMELF(strTitle, strURLPhoto, strNews, strCategory) VALUES(@strtitle, @strurlphoto, @strnews, @strCategory)"

    objCmm.Parameters.AddWithValue('strtitle', title);
    .
    .
    .
    • Marcado como Resposta Lucas Alves T O segunda-feira, 12 de dezembro de 2011 17:13
    segunda-feira, 12 de dezembro de 2011 16:14
  • Olá. Realmente consegui solucionar meu problema usando parâmetros.

    Para ter uma pequena base de como fazer:

    http://stackoverflow.com/questions/1125846/whats-wrong-with-this-sqlce-query

    No meu caso, o exemplo que havia dado acima, ficou desta maneira:

    using (SqlCeCommand objCmm = new SqlCeCommand("INSERT INTO tblNewsUMELF(strTitle, strURLPhoto, strNews, strCategory) VALUES(@title, @url, @news, @category)", objCnn.objCnn)) {
                        objCmm.Parameters.Add("@title", title);
                        objCmm.Parameters.Add("@url", "0");
                        objCmm.Parameters.Add("@news", news);
                        objCmm.Parameters.Add("@category", category);
                        objCnn.openCnn();
                        objCmm.ExecuteNonQuery();
                        objCnn.closeCnn();
    

    Obrigado

    • Marcado como Resposta Lucas Alves T O quarta-feira, 14 de dezembro de 2011 20:21
    segunda-feira, 12 de dezembro de 2011 17:50

Todas as Respostas

  • Tente utilizar parâmetros ao invés de string.Format para inserir o texto:

    "INSERT INTO tblNewsUMELF(strTitle, strURLPhoto, strNews, strCategory) VALUES(@strtitle, @strurlphoto, @strnews, @strCategory)"

    objCmm.Parameters.AddWithValue('strtitle', title);
    .
    .
    .
    • Marcado como Resposta Lucas Alves T O segunda-feira, 12 de dezembro de 2011 17:13
    segunda-feira, 12 de dezembro de 2011 16:14
  • Olá. Realmente consegui solucionar meu problema usando parâmetros.

    Para ter uma pequena base de como fazer:

    http://stackoverflow.com/questions/1125846/whats-wrong-with-this-sqlce-query

    No meu caso, o exemplo que havia dado acima, ficou desta maneira:

    using (SqlCeCommand objCmm = new SqlCeCommand("INSERT INTO tblNewsUMELF(strTitle, strURLPhoto, strNews, strCategory) VALUES(@title, @url, @news, @category)", objCnn.objCnn)) {
                        objCmm.Parameters.Add("@title", title);
                        objCmm.Parameters.Add("@url", "0");
                        objCmm.Parameters.Add("@news", news);
                        objCmm.Parameters.Add("@category", category);
                        objCnn.openCnn();
                        objCmm.ExecuteNonQuery();
                        objCnn.closeCnn();
    

    Obrigado

    • Marcado como Resposta Lucas Alves T O quarta-feira, 14 de dezembro de 2011 20:21
    segunda-feira, 12 de dezembro de 2011 17:50