2011-11-25 124 views
0

我一直在试图弄清代码有什么问题。ExecuteNonQuery溢出错误?

我想要做的是,有两个单选按钮的性别,男&女...

我想,单击时男时单选按钮,文本男性在社会性别保存到数据库字段,如果文本类型,而是我得到溢出错误...

添加单选按钮和[性别]字段之前,一切工作正常...

所以它任何帮助?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 
using System.Data.OleDb; 

namespace OfflineRF 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     string gender; 

     private void button1_Click(object sender, EventArgs e) 
     { 
      string ORF1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = C:\\OfflineRF.mdb"; 
      OleDbConnection conn = new OleDbConnection(ORF1); 
      conn.Open(); 
      OleDbCommand cmd = new OleDbCommand(); 
      cmd.Connection = conn; 
      cmd.CommandText = "INSERT INTO OFFRF([Fname], [Lname], [NIC], [Gender], [HomeTel], [Cellphone], [Passengers], [From], [To])VALUES('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + textBox7.Text + textBox8.Text +"','"+gender+"','" + textBox4.Text + "','" + textBox5.Text + "','" + textBox6.Text + "','" + comboBox1.Text + "','" + comboBox2.Text + "')"; 
      cmd.ExecuteNonQuery(); 
      conn.Close(); 
      System.Windows.Forms.MessageBox.Show("Form Saved Successfully !", "Caption", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); 

      textBox1.Text = ""; 
      textBox2.Text = ""; 
      textBox3.Text = ""; 
      textBox4.Text = ""; 
      textBox5.Text = ""; 
      textBox6.Text = ""; 
      textBox7.Text = ""; 
      textBox8.Text = ""; 
      comboBox1.SelectedIndex = -1; 
      comboBox2.SelectedIndex = -1; 
     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      Application.Exit(); 
     } 

     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      if (comboBox1.Text == "Karachi") 
      { 
       comboBox2.Items.Clear(); 
       comboBox2.Items.Add("Sukkur"); 
       comboBox2.Items.Add("Hyderabad"); 
      } 
      else if (comboBox1.Text == "Sukkur") 
      { 
       comboBox2.Items.Clear(); 
       comboBox2.Items.Add("Karachi"); 
       comboBox2.Items.Add("Hyderabad"); 
      } 
      else 
      { 
       comboBox2.Items.Clear(); 
       comboBox2.Items.Add("Karachi"); 
       comboBox2.Items.Add("Sukkur"); 
      } 
     } 

     private void Male_CheckedChanged(object sender, EventArgs e) 
     { 
      if (Male.Checked) 
       gender = "Male"; 
      else 
       gender = "Female"; 
     } 

    } 
} 
+0

_什么是错误message_? – SLaks

+0

overflowtenonquery(); –

+0

你的意思是** Stack **溢出?请发布_exact_错误消息。 – SLaks

回答

1

你有一个无限循环。当组合框更改selectedindex事件时,则更改组合框,并且事件再次触发。

编辑...

在您更改组合框指标再次导致事件触发的无限循环按钮的事件处理程序的结束,从SQL-的可能性随之而来的计算器

+0

在添加单选按钮之前,它工作正常。 –

1

除了通过在串联字符串中添加值来注入,如果有人要输入像“O'Conner”这样的名称值,那么名称中的引号会终止字符串并将其余部分关闭。

调查OleDbParameter对象并设置它们。没有确切的语法,你会做类似

string ORF1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = C:\\OfflineRF.mdb"; 
OleDbConnection conn = new OleDbConnection(ORF1); 
conn.Open(); 
OleDbCommand cmd = new OleDbCommand(); 
cmd.Connection = conn; 
cmd.CommandText = "INSERT INTO OFFRF(Fname, Lname, NIC, Gender, HomeTel, " 
      + "Cellphone, Passengers, [From], [To]) VALUES " 
      + "( ?, ?, ?, ?, ?, ?, ?, ?, ?)"; 
// Add parameters in same ordinal position as the "?" place-holders 
// the first parameter is more of generic description of WHAT it is for and 
// does NOT have to exactly match the column name, the second parameter is 
// the actual value that should be put into the database. This same context 
// is used for performing other SQL actions (select, delete, update, etc) 
// to help prevent SQL injection. 
cmd.Parameters.Add("valForFName", textBox1.Text); 
cmd.Parameters.Add("valForLName", textBox2.Text); 
cmd.Parameters.Add("valForNIC", textBox3.Text + textBox7.Text + textBox8.Text); 
// Not sure of syntax here, but get proper text from your radio choice of gender into string 
gender = YourForm.RadioForGender.SelectedItem.Text; 
cmd.Parameters.Add("valForGender", gender); 
cmd.Parameters.Add("valHomePhone", textBox4.Text); 
cmd.Parameters.Add("valCell", textBox5.Text); 
cmd.Parameters.Add("howmany", textBox6.Text); 
cmd.Parameters.Add("forFromValue", comboBox1.Text); 
cmd.Parameters.Add("forToValue", comboBox2.Text); 
cmd.ExecuteNonQuery(); 
conn.Close();