none
Erro - urgente RRS feed

  • Pergunta

  • Oi pessoal

    Estou a desenvolver uma aplicaçãozinha que funciona sobre uma base de dados sql e está a dar-me um erro muito esquisito.

    Nas strings sql, se ponho a referência ao tipo (por exemplo " + abc.Text + ") o erro é:

    "The name 'gabinete' is not permitted in this context. Only constants, expressions, or variables allowed here. Column names are not permitted." (gabinete é o texto que eu insiro na textbox e não é nome de nenhuma coluna das tabelas da base de dados).

    Se não ponho a referência o nome é:

    "The number name 'System.Web.UI.WebControls' contains more than the maximum number of prefixes. The maximum is 3."

     

     

    Aqui fica o código da página:

     

    using System;

    using System.Data;

    using System.Configuration;

    using System.Collections;

    using System.Data.SqlClient;

    using System.Web;

    using System.Web.Security;

    using System.Web.UI;

    using System.Web.UI.WebControls;

    using System.Web.UI.WebControls.WebParts;

    using System.Web.UI.HtmlControls;

    public partial class inserir : System.Web.UI.Page

    {

    protected void Page_Load(object sender, EventArgs e)

    {

    }

    void inserir_servico(string serv)

    {

    SqlConnection con_bd = new SqlConnection("data source= s200sqla; integrated security=true; initial catalog=impressoras");

    con_bd.Open();

    string sql = "INSERT INTO servicos (servico) VALUES (" + servi.Text + ")";

    SqlCommand com_bd = new SqlCommand(sql, con_bd);

    com_bd.ExecuteNonQuery();

    con_bd.Close();

    }

    void inserir_impressora(string servi,string utiliz,string model,string macad,string ipn,string siagn,string fornec)

    {

    SqlConnection con_bd = new SqlConnection("data source= s200sqla; integrated security=true; initial catalog=impressoras");

    con_bd.Open();

    string sql = "INSERT INTO impressoras (servico, utilizador, modelo, macadress, ip, siag, fornecedor) VALUES (" + serv.SelectedValue + "','" + user.Text + "','" + mod.Text + "','" + mc.Text + "'," + ipnum.Text + ",'" + siaga.Text + "','" + forn + ")";

    SqlCommand com_bd = new SqlCommand(sql, con_bd);

    com_bd.ExecuteNonQuery();

    con_bd.Close();

    }

    protected void voltar_Click(object sender, EventArgs e)

    {

    Response.Redirect("Default.aspx");

    }

    protected void iserv_Click1(object sender, EventArgs e)

    {

    inserir_servico(servi.Text);

    Response.Redirect("inserir.aspx");

    }

    protected void inimp_Click(object sender, EventArgs e)

    {

    inserir_impressora(serv.SelectedValue, user.Text, mod.Text, mc.Text, ipnum.Text, siaga.Text, forn.Text);

    Response.Redirect("inserir.aspx");

    }

    }

     

     

    Alguém me sabe dizer o que está mal?

    quinta-feira, 17 de maio de 2007 16:44

Todas as Respostas

  • Estão faltando umas aspas simples aí. De cara eu vi que faltam aqui VALUES (" + serv e aqui forn + ")";. Dá uma olhada com mais calma na sua query pra ver se não faltam outras.

     

    --- Editando ---

     

    Aqui também:

     

    (" + servi.Text + ")";

    sexta-feira, 18 de maio de 2007 07:42
  • Obrigada Renato!

    Realmente era isso. Resolvi os erros que me estavam dando (pelo menos aparentemente).

    Só que agora dá-me este errro:

    "Cannot insert the value NULL into column 'id', table 'impressoras.GRA\BM871002.servicos'; column does not allow nulls. INSERT fails."

    Eu tenho na tabela um campo de identificação que deveria ser automático só que não consigo automatizar para que de cada vez que eu insira um valor nessa tabela esse campo se preencha e incremente automaticamente. Em Access era fácil mas em SQL é a primeira vez que estou a fazer...

    Alguma dica?

     

    sexta-feira, 18 de maio de 2007 09:12
  • Que ferramenta você está usando pra gerenciar o SQL? Se for o Enterprise Manager, edite a tabela e coloque Yes na propriedade Identity do seu campo Id. Também marque esse campo como chave primária, clicando no ícone da chave, como no Access. Se a sua ferramenta for outra, você tem que procurar alguma opção parecida com as que eu disse.
    sexta-feira, 18 de maio de 2007 13:07
  • Eu criei a base de dados mesmo no Visual Studio mas ela está ligada ao servidor de SQL da empresa. Usamos o SQL Management Studio.

    A propriedade Identity está Yes e é uma chave primária. Também defini o incremento para 1.

    Já não sei mais o que fazer.

    Já andei à procura de alguma propriedade que dissesse que aquele campo era automático mas não encontro...

    Tinha de acabar essa aplicação hoje...mas acho que não vou conseguir...

    sexta-feira, 18 de maio de 2007 13:30
  • Ah, você deve estar usando o SQL 2005 então. Esse eu nunca usei, então não posso falar muito sobre. Vamos esperar e ver se alguém do fórum que seja mais familiarizado com ele possa ajudar.
    sexta-feira, 18 de maio de 2007 14:06
  • VALUES (" + serv.SelectedValue + "','" + user.Text + "','" + mod.Text + "','" + mc.Text + "'," + ipnum.Text + ",'" + siaga.Text + "','" + forn + ")";

     

    O erro é  na linha acima , que   vc colocou forn ao invés de forn.Text, eu tive um erro semelhante a esse.

    segunda-feira, 7 de abril de 2008 19:36