2014-09-04 62 views
0

我是C#的新手,請檢查我的代碼。它在這裏停止在cmd.ExecuteNonQuery();,但是當我簡單地插入日期它的作品,但不插入組合框。如何使用C將組合框值插入SQL Server#

SQL查詢是否正確?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.Data.SqlClient; 

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

     private void button1_Click(object sender, EventArgs e) 
     { 
      object sel = comboBox1.SelectedValue; 

      SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=c:\users\abdul samad\documents\visual studio 2013\Projects\newpro\newpro\Database1.mdf;Integrated Security=True"); 
      con.Open(); 
      SqlCommand cmd = new SqlCommand("INSERT INTO registor (Name, FullName, Password, Email, Gander) VALUES ('"+txtfname.Text+"','"+txtfname.Text+"', '"+txtuname.Text+"', '"+txtpass.Text+"', '"+txtemail.Text+"','"+comboBox1+"');",con); 

      cmd.ExecuteNonQuery(); 

      cmd.Clone(); 

      MessageBox.Show("Record inserted"); 
      con.Close(); 
     } 
    } 
} 
+0

你有一個錯字在你的SQL - ** **甘德可能是一個錯誤(視無論如何,你的桌子上都有) – jbutler483 2014-09-04 15:28:24

+3

就像文本框一樣,你必須使用你想要的屬性。其次,你需要參數化你的查詢。這是廣泛開放的SQL注入。 – 2014-09-04 15:28:48

+0

您是否試圖插入ComboBox控件或ComboBox中的值? – wblanks 2014-09-04 15:28:51

回答

4

您必須從Combobox中獲取所選值。 combobox1 retuns只有類名System.Windows.Forms.ComboBox

而且別人,建議使用參數..這樣的:

private void button1_Click(object sender, EventArgs e) 
{ 
    using(SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=c:\users\abdul samad\documents\visual studio 2013\Projects\newpro\newpro\Database1.mdf;Integrated Security=True")) 
    { 
     try 
     { 

      using (var cmd = new SqlCommand("INSERT INTO registor (Name, FullName, Password, Email, Gander) VALUES (@Name,@Fullname,@Password,@Email, @Gander)")) 
      { 

       cmd.Connection = con; 
       cmd.Parameters.Add("@Name", txtfname.Text); 
       cmd.Parameters.Add("@Fullname", txtfname.Text); 
       cmd.Parameters.Add("@Password", txtpass.Text); 
       cmd.Parameters.Add("@Email", txtemail.Text); 
       cmd.Parameters.Add("@Gander", comboBox1.GetItemText(comboBox1.SelectedItem)); 

       con.Open() 
       if(cmd.ExecuteNonQuery() > 0) 
       { 
        MessageBox.Show("Record inserted"); 
       } 
       else 
       { 
        MessageBox.Show("Record failed"); 
       } 
      } 
     } 
     catch (Exception e) 
     { 
      MessageBox.Show("Error during insert: " + e.Message); 
     } 
    } 
} 
+2

上帝禁止在您的插入語句SQL注入.........永遠不會使用這樣的查詢,使用參數,而不是! – 2014-09-04 15:32:30

+0

thx M Patel - >更正了我的答案 – 2014-09-04 15:49:41

+1

這絕對看起來更好。我通常還會在使用語句的基礎上添加SqlCommand,這有助於確保沒有任何關於連接的內容。 – 2014-09-04 16:06:01