2016-01-22 3 views
2

Я только начал изучать C# с помощью Visual Studio 2015, и моя задача - создать лотерею, которая сохраняет сгенерированные числа в базу данных. Я пробовал различные методы, и ни один из них, похоже, не добавил никаких дополнений к моей таблице. Может ли кто-нибудь помочь мне понять, что мне нужно сделать, принять целое число, которое было сгенерировано и преобразовано в строку/текстовое поле, а затем вставить это значение в мою таблицу.Сложность Вставка данных из формы C# в базу данных

Heres мой текущий код ниже, кнопка 2 является кнопкой, которую я пытаюсь использовать для сохранения данных из текстовых полей.

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.Configuration; 
using System.Data.SqlClient; 

namespace WindowsFormsApplication2 
{ 
    public partial class Form1 : Form 
    { 
     //Database details 
     string connectionString; 
     SqlConnection connection; 
     public Form1() 
     { 
      InitializeComponent(); 
      connectionString = ConfigurationManager.ConnectionStrings["WindowsFormsApplication2.Properties.Settings.LottoConnectionString"].ConnectionString; 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      Random rnd = new Random(); 
      int[] slot = new int[6]; 
      int counter = 0; 

      for (int i = 0; i < slot.Length; i++) 
      { 
       slot[i] = rnd.Next(0, 100); 
      } 

      //Converting generated ints to Strings for display 
      textBox1.Text = (slot[0].ToString()); 
      textBox2.Text = (slot[1].ToString()); 
      textBox3.Text = (slot[2].ToString()); 
      textBox4.Text = (slot[3].ToString()); 
      textBox5.Text = (slot[4].ToString()); 
      textBox6.Text = (slot[5].ToString()); 

      //Incrementing Counter checks matches 
      if (numericUpDown1.Value == slot[0]) 
      { 
       counter += 1; 
      } 
      if (numericUpDown2.Value == slot[1]) 
      { 
       counter += 1; 
      } 
      if (numericUpDown3.Value == slot[2]) 
      { 
       counter += 1; 
      } 
      if (numericUpDown4.Value == slot[3]) 
      { 
       counter += 1; 
      } 
      if (numericUpDown5.Value == slot[4]) 
      { 
       counter += 1; 
      } 
      if (numericUpDown6.Value == slot[5]) 
      { 
       counter += 1; 
      } 

      //display total matches 
      textBox7.Text = ("You got" + counter + "/6 matches!"); 

      LottoDataSetTableAdapters.ResultsTableAdapter resultsTableAdapter = 
      new LottoDataSetTableAdapters.ResultsTableAdapter(); 

      resultsTableAdapter.Insert((slot[0].ToString()), (slot[1].ToString()), (slot[2].ToString()), (slot[3].ToString()), (slot[4].ToString()), (slot[5].ToString())); 
     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      // Adding Data to Database 
      string query = "INSERT INTO Results VALUES (@First)"; 
      using (connection = new SqlConnection(connectionString)) 
      using (SqlCommand command = new SqlCommand(query, connection)) 
      { 
       connection.Open(); 
       command.Parameters.AddWithValue("@First", textBox1.Text); 
       command.Parameters.AddWithValue("@Second", textBox2.Text); 
       command.Parameters.AddWithValue("@Third", textBox3.Text); 
       command.Parameters.AddWithValue("@Fourth", textBox4.Text); 
       command.Parameters.AddWithValue("@Fifth", textBox5.Text); 
       command.Parameters.AddWithValue("@Sixth", textBox6.Text); 
      } 
     } 
    } 
} 

Вся помощь будет принята с благодарностью.

+0

Пожалуйста, включите определение таблицы результатов. Является ли таблица результатов одним столбцом? –

ответ

-1

Похоже, что этот вопрос, как был задан и ответ, прежде - посмотрите здесь - How to insert data into SQL Server

редактировать - мое первое впечатление было не так, я не могу видеть, где вы выполняете запрос к БД. его было некоторое время, так как он написал руководство для кода ado без использования орма, поэтому простите меня, если я ошибаюсь.

0

В инструкции INSERT отсутствуют другие параметры в части VALUES. Вам также необходимо выполнить команду, и у вас отсутствуют скобки для использования соединения.

private void button2_Click(object sender, EventArgs e) 
{ 
    // Adding Data to Database 
    string query = "INSERT INTO Results (First, Second, Third, Fourth, Fifth, Sixth) VALUES (@First, @Second, @Third, @Fourth, @Fifth, @Sixth)"; 
    using (var connection = new SqlConnection(connectionString)) 
    { 
     using (SqlCommand command = new SqlCommand(query, connection)) 
     { 
      connection.Open(); 
      command.Parameters.AddWithValue("@First", textBox1.Text); 
      command.Parameters.AddWithValue("@Second", textBox2.Text); 
      command.Parameters.AddWithValue("@Third", textBox3.Text); 
      command.Parameters.AddWithValue("@Fourth", textBox4.Text); 
      command.Parameters.AddWithValue("@Fifth", textBox5.Text); 
      command.Parameters.AddWithValue("@Sixth", textBox6.Text); 

      command.ExecuteNonQuery(); 

     } 
    } 
} 
+0

Спасибо, что имеет большой смысл. Единственная проблема, с которой я столкнулся, заключается в том, что когда она достигает команды .ExecuteNonQuery(); Это дает мне необработанную ошибку, вызванную именем столбца или количеством заданных значений, не соответствует определению таблицы. Насколько мне известно, мои Coloumns являются «First» «Second» и т. Д. Спасибо за ваше время. – user5827001

+0

Можете ли вы получить определение таблицы из SQL-сервера? Если имена столбцов действительно являются первыми, вторыми, третьими ... тогда мне нужно изменить свой ответ. –

+0

Я отредактировал свой ответ, чтобы отразить таблицу с шестью столбцами. Возможно, вам придется изменить это или определение таблицы в соответствии с вашими потребностями. –

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