2017-12-31 189 views
0

私は注文管理システムを作成しました。このコードを使用してデータに注文を挿入しました。mysqlからC#で手動でIDを増やす

xconn.Open(); 
MySqlCommand cmd = new MySqlCommand(); 
cmd.CommandText = "insert into tblOrder 
(RegId,ItmId,quantity,Odrdate,Total) values ('" + label11.Text + "','" + 
26 + "','" + txt26.Text + "','" + date + "','" + lbltotal.Text + "');"; 
cmd.Connection = xconn; 
cmd.ExecuteNonQuery(); 
xconn.Close(); 

私のテーブル内の注文IDは自動インクリメントですが、1つの注文が完了した後にのみ増分します。

合計をクリックすると、次の注文が新しいIDになるようにodridが増分されます。

+2

あなたのコードはSQLインジェクション攻撃の脆弱性があります。説明とパラメータ化されたクエリとプリペアドステートメントを使用して正しく行う方法の例については、http://bobby-tables.com/を参照してください。また、この単純な文字列の連結を行ってクエリを構築するときに、構文エラーが発生するのを避けるのにも役立ちます。 – ADyson

+0

あなたの質問について - INSERTを行う場合、フィールドは自動的にインクリメントする必要があります。クエリを実行した直後にデータベースから最後に挿入されたIDをフェッチすると、必要に応じて最新のIDの値を知ることができます。しかし、「クリック総数」についてのあなたの言及についての文脈は十分ではありません。ここにボタンはありません。それはあなたのコードにどのように関係していますか? – ADyson

+0

私は大学のプロジェクトに使用しています。締め切りは明日です。あなたがこのコードで私を助けることができたら、それはすばらしいでしょう:) –

答えて

0

IDがプライマリキーの場合、一意のIDを持たないデータベーステーブルに新しい行を挿入することはできません。

なぜ、現在の注文の状態を保存する新しい列「order_status」を導入しないのですか?

0

私が合計をクリックすると、次の注文が の新しいIDになるように、odridが増加するはずです。

たとえば、993をクリックして994をクリックしたいが、それはすでにデータベースに存在しています。

あなたの+1に関する情報を持つ列を置くことができます。 実稼働環境で現在のコードを使用している場合は、SQLインジェクションを使用してコードを簡単にハッキングできます。

関連する問題