Inquiridor
Erro - urgente

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?
Todas as Respostas
-
-
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?
-
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.
-
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...
-
-
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.