none
[WebMetod] Insert ???? RRS feed

  • Pergunta

  •  

    Bom dia pessoal, seguinte, tenho um método no meu webservice para fazer a gravação dos dados informados na minha página asp.net, porem so esta funcionando assim:

     

    [WebMethod]

    public void SetPost(string Nome)

    {

    SqlConnection con = new SqlConnection();

    objInformation.CheckConnection(con);

    SqlTransaction trans = con.BeginTransaction();

    try

    {

    objInformation.Execute("insert into Pessoa (Nome) values ('" + Nome + "')", con, trans);

    trans.Commit();

    }

    catch

    {

    trans.Rollback();

    }

    }

     

     

    Apenas com um parametro, se caso eu mudar o codigo para: EX

     

    [WebMethod]

    public void SetPost(string Nome, string Sexo)

    {

    SqlConnection con = new SqlConnection();

    objInformation.CheckConnection(con);

    SqlTransaction trans = con.BeginTransaction();

    try

    {

    objInformation.Execute("insert into Pessoa (Nome,Sexo) values ('" + Nome + "'),('" + Sexo + "')", con, trans);

    trans.Commit();

    }

    catch

    {

    trans.Rollback();

    }

    }

     

    O programa roda tranquilo, porem nao grava nada no banco, alguem pode me ajudar?

    sexta-feira, 7 de novembro de 2008 12:55

Todas as Respostas

  • Samis,

     

    A sintaxe do INSERT está incorreta, o correto seria o código abaixo:

     

    Code Snippet
    objInformation.Execute(string.Format("INSERT INTO Pessoa(Nome, Sexo) VALUES ('{0}', '{1}')"), con, trans);

     

    Você estava executando o comando assim:

    INSERT INTO Pessoa (Nome, Sexo) VALUES ('Ari'),('M')

     

    Att.


    Ari

     

    sexta-feira, 7 de novembro de 2008 16:12
  •  

    Boa tarde Ari, eu mudei o código, podem continua não inserindo, será que tem alguma coisa a ver com o método que eu estou usando na minha página?

     

    La onde eu chamo esse método ta assim o código:

    esWebService.Service service = new esWebService.Service();

    service.SetPost(txtNomeTitular.Text, ddlSexo.Text);

     

    Será que seria isso mesmo?

    sexta-feira, 7 de novembro de 2008 16:52
  • Olá Samis,

     

    Creio que você deve investigar o funcionamento dessa sua classe utilizada através da variável objInformation, e verificar o que está acontecendo na inserção... Provavelmente, esse método Execute dessa classe, por sua vez, utiliza um objeto qualquer xxxCommand, e chama o ExecuteNonQuery, e o método ExecuteNonQuery retorna um valor do tipo int, que corresponde ao número de linhas que foram afetadas pela instrução SQL... No seu exemplo, o ExecuteNonQuery deveria retornar 1 (porque inseriu um registro). Faça um teste e veja se o retorno está correto:

     

    Code Snippet

     

     int registrosInseridos = dbComando.ExecuteNonQuery();

     

     

    Abraços,

    Caio Proiete




    Caio Proiete
    http://www.caioproiete.com
    sexta-feira, 7 de novembro de 2008 19:01
  • Beleza pessoal, ate aqui tudo certo e funcionando, agora surgiu mais um problema, as veses nem problema, mas falta de conhecimento com webservice mesmo.

     

    Seguinte, no meu webservice eu tenho o seguinte método:

     

    SqlConnection con = new SqlConnection();

    DataTable dtValidaUser = objInformation.Select("Select * from usuario where login = '" + Login + "' and senha = '" + Senha + "' and Status = 'A'", con);

    string strAutorizado = "N";

    string strMensagem = "";

    if (dtValidaUser.Rows.Count > 0)

    strAutorizado = "S";

    XmlDocument xmldoc = new XmlDocument();

    XmlNode xmlnode = xmldoc.CreateXmlDeclaration("1.0", "UTF-8", null);

    xmldoc.AppendChild(xmlnode);

    XmlNode xmlResult = xmldoc.CreateElement("Result");

    xmldoc.AppendChild(xmlResult);

    xmlnode = xmldoc.CreateElement("Autorizado");

    xmlnode.InnerText = strAutorizado;

    xmlResult.AppendChild(xmlnode);

    xmlnode.InnerText = strMensagem;

    xmlResult.AppendChild(xmlnode);

    return xmldoc;

     

    Que me retorna S se validar o login e N se nao validar, gostaria da ajuda de vocês pra mim saber como eu faço pra validar isso na minha aplicação, tentei o seguinte mas não consegui.:

     

    esWebService.Service service = new esWebService.Service();

    XmlNode v = service.GetValidaUser(txtSenhaLogin.Text, txtSenhaLogin.Text);

    for (int w = 0; w < v.ChildNodes.Count; w++)

    {

    XmlElement xe = (XmlElement)v.ChildNodesWilted Flower;

    XmlDocument xd = new XmlDocument();

    XmlNode t = service.GetValidaUser(txtLoginLogin.Text, txtSenhaLogin.Text);

    if (xd.DocumentElement.ToString() == "N")

    {

    Response.Write("Login ou senha inválidos");

    }

    else

    {

    Response.Redirect("SmartPhone.aspx");

    }

    }

     

    Obrigado a todos que estão me ajudando.

    segunda-feira, 10 de novembro de 2008 12:28
  • Olá Samis,

     

    Não testei o seu código, mas me parece que você está substituindo o valor do "Autorizado" pela "Mensagem" pois apenas um "node" XML está sendo instanciado.

     

    De qualquer forma, para não bagunçar o fórum e uma vez que o problema do INSERT já está resolvido, marque o tópico como respondido, e crie um novo tópico com esse problema do retorno do XML.

     

    Abraços,

    Caio Proiete

    terça-feira, 18 de novembro de 2008 11:09