2015-02-13 3 views
1

Я проверил данные wifi на C#, которые я разделил на требуемую форму MAC, SSID и RSSi. Когда я нажимаю кнопку, результаты должны быть вставлены в таблицу SQL Server, которую я уже создал. И если я снова нажму кнопку, она перестанет вставлять. Я попробовал несколько методов и не мог заставить его работать, буду ценить помощьКак вставить данные сканирования Wi-Fi в таблицу SQL Server

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

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

     private void button1_Click(object sender, EventArgs e) 
     { 
      string[] ports = SerialPort.GetPortNames(); 

      foreach (string port in ports) 
      { 
       comboBox1.Items.Add(port); 
      } 
     } 

     string t; 

     private void button2_Click(object sender, EventArgs e) 
     { 
      t = comboBox1.Text.ToString(); 
      sErial(t); 
     } 

     SerialPort sp; 

     void sErial(string Port_name) 
     { 
      sp = new SerialPort(Port_name, 115200, Parity.None,8, 
    StopBits.One);  
      sp.DataReceived += new 
      SerialDataReceivedEventHandler(DataReceivedHandler); 
      sp.Open(); 
     } 

     private void DataReceivedHandler(object sender, 

     SerialDataReceivedEventArgs e) 
     { 
      SerialPort sp = (SerialPort)sender; 
      string msg = string.Empty; 
      bool canCont = false; 

      while (!canCont) 
      { 
       msg += sp.ReadLine(); 

       if (msg.Contains("Scan complete ")) 
       { 
        canCont = true; 
       } 
      } 

      //string w = sp.ReadLine(); 
      //string w = sp.ReadExisting(); 

      // string msg = sp.ReadExisting(); 

      string[] msgArr = msg.Split('\r'); 

      Invoke(new Action(() => listBox1.Items.Clear())); 

      List<string[]> list = new List<string[]>(); 
      List<Networks> Scan = new List<Networks>(); 

      for (int i = 0; i < msgArr.Length; i++) 
      { 
       list.Add(msgArr[i].Split(new string[] { " " }, 
    StringSplitOptions.RemoveEmptyEntries)); 
      } 

      for (int i = 0; i < list.Count; i++) 
      { 
       if (i > 2) 
       { 
        if (list[i].Length > 4) 
        { 
         int numOfSplits = 0; 
         List<string> tempList = new List<string>(); 

         for (int ii = 0; ii < list[i].Length; ii++) 
         { 
          if (numOfSplits < 6) 
          { 
string[] temp1 = list[i][ii].Split(new char[] { ' ' }, 
StringSplitOptions.RemoveEmptyEntries); 
           numOfSplits += temp1.Length; 

           for (int iii = 0; iii < temp1.Length; iii++) 
           { 
            tempList.Add(temp1[iii]); 
           } 
          } 
          else 
          { 
           tempList.Add(list[i][ii]); 
          } 
         } 

         Scan.Add(new Networks() 
         { 
          ID = Convert.ToInt32(tempList[0]), 
          NetworkType = tempList[1], 
          MAC = tempList[2], 
          RSSi = Convert.ToInt32(tempList[3]), 
          Rate = Convert.ToDouble(tempList[4]), 
          Channel = Convert.ToInt32(tempList[5]), 
          Security = tempList[6], 
          SSID = tempList[7], 
         }); 
        } 
       } 
      } 

      if (msg != String.Empty) 
      { 
       Invoke(new Action(() => richTextBox1.AppendText(msg))); 
      } 

      for (int i = 0; i < Scan.Count; i++) 
      { 
      Invoke(new Action(() => listBox1.Items.Add(Scan[i].MAC))); 
      Invoke(new Action(() => listBox2.Items.Add(Scan[i].RSSi))); 
      Invoke(new Action(() => listBox3.Items.Add(Scan[i].SSID))); 

      msg = string.Empty; 
      list.Clear(); 
      } 
     } 

    public SqlConnection con = new SqlConnection(@"Data Source=  
(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\AP_SCAN_DATA.mdf; 
Integrated Security=True"); 

    private void button3_Click(object sender, EventArgs e) 
    { 
     using (SqlConnection connection = new SqlConnection(@"Data Source= 
(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\AP_SCAN_DATA.mdf; 
Integrated Security=True")) 
     { 
      using (SqlCommand command = new SqlCommand()) 
      { 
       command.Connection = connection;   // <== lacking 
       command.CommandType = CommandType.Text; 
       command.CommandText = "INSERT into LOCATIONSCAN ((Scan[i].SSID), (Scan[i].MAC),(Scan[i].RSSi)) VALUES (@SSID, @MAC, @RSSi)"; 

       command.Parameters.AddWithValue("@SSID", listBox1); 
       command.Parameters.AddWithValue("@MAC", listBox2); 
       command.Parameters.AddWithValue("@RSSi",listBox3); 

       try 
       { 
        connection.Open(); 
        int recordsAffected = command.ExecuteNonQuery(); 
       } 
       catch(SqlException) 
       { 
        // error here 
       } 
       finally 
       { 
        connection.Close(); 
       } 
      } 
     } 
    } 
} 

ответ

0

Во-первых, у вас есть пустой CATCH блок, который заставит ваше SQLExceptions исчезнуть молча. Удалите CATCH, и исключение поможет вам. Во-вторых, ваш CommandText выглядит странно, не зная схемы вашей базы данных, я бы предположил, что это должно быть что-то вроде этого;

command.CommandText = "INSERT into LOCATIONSCAN (SSID, MAC, RSSi) VALUES ('@SSID', '@MAC', '@RSSi')"; 

Следующая проблема заключается в том, что вы должны указать свойство списка, содержащего значение при добавлении параметра. Например, это может быть свойство SelectedValue.

command.Parameters.AddWithValue("@SSID", listBox1.SelectedValue); 
+0

Thanyou Я дам ему идти и опубликовать результат – Olu

+0

Thanyou для ответа попытался что вы предложили я получил сообщение об ошибке в строке 187 ..... «необработанное исключение„System.ArgumentException“типа произошло в System.Data.dll – Olu

+0

@Olu Существует только одна строка SQL, поэтому это не ошибка SQL, ошибка которой указана в строке 187. Что такое ошибка? Каков код в строке 187, на который вы ссылаетесь? Что вы пробовали? «Вы должны приложить некоторые усилия, чтобы помочь себе, иначе почему кто-нибудь здесь захочет вам помочь? –

Смежные вопросы