2017-05-15 11 views
0
FbCommand fbCmm = 
     new FbCommand("INSERT INTO PRODUTO 
        (CODIGO,EAN,DESCRICAO,VAL_PRODUTO,VAL_CUSTO,CAT_PRECO)" 
        + "Values (@txt_codigo.Text, @txt_ean, @txt_descricao, 
        @txt_valPro, @txt_valCus, @txt_catPre)", ConexaoFirebird.Conexao); 

enter image description here]挿入FirebirdのデータベースC#が

その文で何が悪いのでしょうか? 他のクラスでオープン接続しました - ConexaoFirebird.Conexao();

+0

変数にはどこに値が割り当てられていますか?例えば'@ txt_ean'?また、codigo変数( '@ txt_codigo.Text')のtextプロパティは何ですか? – JohnLBevan

答えて

1

これらのパラメータの値を指定せずにパラメータ化クエリを実行しています。 the documentationを参照してください:

ここ
FbCommand cmd = new FbCommand("insert into t1(id, text) values (@id, @text);"); 
cmd.CommandType = CommandType.Text; 

cmd.Parameters.Add("@id", 123); 
cmd.Parameters.Add("@text", "my string"); 

cmd.ExecuteNonQuery(); 

彼らはそれぞれidtextという名前のパラメータに値123"my string"をバインドします。

もそうtxt_codigo.Textはおそらく仕事に行くされていない、パラメータ名は、一般的に英数字にresctictedされていることに注意してください。

+0

右ですが、どのようにしてデータベースにテキストボックスの値を挿入できますか?他の方法はありますか? – Matheus

+0

右は、私はそれをやった:txt_ean + ' " '" FbCommand fbCmmは=新しいFbCommand( "INSERT INTO PRODUTO(CODIGO、EAN、DESCRICAO、VAL_PRODUTO、VAL_CUSTO、CAT_PRECO)" + "の値(" + txt_codigo.Text +'。テキスト+ " ''" + txt_descricao.Text + " ''" + txt_valPro.Text + " ''" + txt_valCus.Text + " ''" + txt_catPre.Text + "')"、ConexaoFirebird.Conexao ); その作品。ありがとうございます – Matheus

+0

いいえ、いいえ、いいえ、文字列連結を使用してSQLクエリを作成しないでください。アプリケーションにSQLインジェクションの脆弱性が存在するようになりました。 codigo' @パラメータが 'また、クエリ内の正しい位置に存在していることを確認しながら、その上の'と、あなたは(TXT> codigo.Textx、「@のcodigo」) 'cmd.Parameters.Addを使用しています。 – CodeCaster

0

あなたは、SQLコマンドビルダーとの明確なSQLテキストを作成することもできますし、あなたの接続のCommandオブジェクトを使用することができ、あなたの文は正しいが、明確ではないが、小数、文字列フィールドタイプのために引用符を使用する必要があります。

関連する問題