あなたはSQLを使用しないでくださいこのような。 SQLインジェクション攻撃を受けやすい。あなたのように使用すると、データベースから機密情報を盗んだり、テーブル、データなどを削除することもできます。SQL Injection on wiki
代わりに、パラメータ化されたSQLクエリを使用してください。そのようにして、注射攻撃から安全です。私はsqlを書く方がはるかに現実的だと思います。
あなたのケースでは、テキストボックスの1つに '文字'を入力すると、クエリが例外になることがあります。問題を解決するには、prametersを使用してください。
あなたの場合は、そのようなものを書くことができます。
string sqlString = @"INSERT INTO quotedetails (
name,
address,
district,
date,
forto,
refto,
total)
VALUES (
@PAR_name,
@PAR_address,
@PAR_district,
@PAR_date,
@PAR_forto,
@PAR_refto,
@PAR_total)";
MySqlCommand cmd1 = new MySqlCommand(sqlString, conn);
cmd1.Parameters.AddWithValue("PAR_name", txttoname.Text);
cmd1.Parameters.AddWithValue("PAR_address", txttoaddress.Text.Replace("\r\n", "<br />"));
cmd1.Parameters.AddWithValue("PAR_district", txtdistrict.Text);
cmd1.Parameters.AddWithValue("PAR_date", dateTimePicker1.Value.Date);
cmd1.Parameters.AddWithValue("PAR_forto", txtfor.Text);
cmd1.Parameters.AddWithValue("PAR_refto", txtref.Text);
cmd1.Parameters.AddWithValue("PAR_total", txttotal.Text);
は、私は私のSQLパラメータのプレフィックス
PAR_を使用することに注意してください、それはあなたがそれを使用するかは重要ではありません
PAR_接頭辞を省略することができ、単に慣例であり、それはすべての習慣を命名についてです。
追加;パラメータ化されたクエリでは、すべての値を文字列に変換する必要はありません。あなたの日付フィールドにはDateTimeを使うことができます。あるいはToString()を使わずにint変数を渡すこともできます。
入力を正しくエスケープすることから始めます。 – shmosel
簡単に説明しましょう。新しいデータベースであるためです。 @shmosel – Mohankumar