2015-02-19 4 views
0

Позвольте мне начать с того, что это мое первое реальное приложение C#, поэтому я знаю, что есть, вероятно, более эффективные способы делать вещи, но это моя первая попытка. В любом случае цель приложения - считывать данные из разделенного запятыми файла, разделять каждый элемент этого разделенного запятой файла и затем импортировать эти элементы в строки в базе данных. В настоящее время я застрял в своей попытке и ломаю фразу, где он каждый раз попадает в ловушку, поэтому он никогда не подключается к моей базе данных. Будем очень благодарны за любые советы, подсказки или помощь.Вставка новых строк в базу данных из текстового файла

Current Error: Необработанное исключение типа 'System.InvalidOperationException' произошло в System.Data.dll

Дополнительная информация: Подключение должно быть действительным и открытым

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 MySql.Data.MySqlClient; 
using System.IO; 
using System.Data.SqlClient; 
namespace Form1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      if (File.Exists(@"C:\Users\E15913\Downloads\testfile3.txt")) 
       File.Delete(@"C:\Users\E15913\Downloads\testfile3.txt"); 
      var reader = new StreamReader(File.OpenRead(@"C:\Users\E15913\Downloads\ALMGrade.csv")); 
      using (StreamReader readFile = new StreamReader(@"C:\Users\E15913\Downloads\ALMGrade.csv")) 
      { 
       string newline = "\n"; 
       string line; 
       string[] row; 
       int i = 0; 

       while ((line = readFile.ReadLine()) != null) 
       { 

        i++; 
        row = line.Split(','); 
        System.IO.File.AppendAllText(@"C:\Users\E15913\Downloads\testfile3.txt", row[0].ToString() + Environment.NewLine + row[1].ToString() + Environment.NewLine + row[2].ToString() + Environment.NewLine + row[3].ToString() + Environment.NewLine + row[4].ToString() + Environment.NewLine + row[5].ToString() + Environment.NewLine + row[6].ToString() + Environment.NewLine + row[7].ToString() + Environment.NewLine); 
       } 

        string MyConString = "SERVER=10.100.135.220;" + "DATABASE=ak_steel;" + "UID=pickler;" + "PASSWORD=csmrecession09;"; 

         string _recDateTimeMySql = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); 
         using (MySqlConnection connection = new MySqlConnection(MyConString)) 
         { 
          MySqlCommand cmd = new MySqlCommand("insert into p4gradetable_copy (Grade, CoilingTemp, GaugeRange, WidthRange, MeshCassette1, MeshCassette2, XBow, Elongation) VALUES(" + '"' + line + '"' + "," + '"' + line + '"' + "," + '"' + line + '"' + "," + '"' + line + '"' + "," + '"' + line + '"' + "," + '"' + line + '"' + "," + '"' + line + '"'); 
          cmd.CommandType = CommandType.Text; 

          cmd.Parameters.AddWithValue("@Grade", line); 
          cmd.Parameters.AddWithValue("@CoilingTemp", line); 
          cmd.Parameters.AddWithValue("@GaugeRange", line); 
          cmd.Parameters.AddWithValue("@WidthRange", line); 
          cmd.Parameters.AddWithValue("@MeshCassette1", line); 
          cmd.Parameters.AddWithValue("@MeshCassette2", line); 
          cmd.Parameters.AddWithValue("@XBow", line); 
          cmd.Parameters.AddWithValue("@Elongation", line); 

          connection.Open(); 
          cmd.ExecuteNonQuery(); 
          label1.Text = "It Works"; 
         } 




      } 
     } 
} 
} 
+1

вы едите очень полезное сообщение об исключении из-за того, почему оно не связано с очень бесполезным «почему это не работает». Избавьтесь от улова try и обработайте ошибку – Plutonix

+0

. Я сделал, как вам было предложено, и получил ошибку. Необработанное исключение типа «System.Data.SqlClient.SqlException» произошло в System.Data.dll. Мне понадобилась линия connection.Open(). – osxoverkill

+0

Я нашел [это] (http://www.c-sharpcorner.com/UploadFile/0c1bb2/inserting-csv-file-records-into-sql-server-database-using-as/) был полезным указателем, когда я что-то похожее на это – McShep

ответ

0

Ваша проблема заключается в том, что вы создаете SqlConnection, который используется для Sql Server. Вы должны создать MySqlConnection и не забудьте связать DLL-клиент MySql с вашим проектом.

Также обеспечивайте создание MySqlCommand вместо SqlCommand.

Разница в Sql .. Классы используются для базы данных SqlServer. Классы MySql используются для базы данных MySql.

параметры связывания:

var cmd = new  MySqlCommand("insert into p4gradetable_copy (Grade, CoilingTemp) VALUES(@Grade, @CoilingTemp)"; 

просто уточняющие 2 колонки для иллюстрации.

+0

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

+0

Вы должны установить клиент MySql Data для .Net на свой компьютер. DLL, которую вы должны указать, - это DLL MySql.Data.Client. Это поставщик данных для базы данных MySql, который вы должны ссылаться на свой проект. Включите в свой код предложение myql.Data.MySqlClient. Затем замените SqlConnetion в вашем коде MySqlConnection –

+0

. Я пошел на сайт SQL и загрузил файл mysql-connect-net и добавил его в качестве ссылки для моего текущего проекта. Я все еще не вижу файл клиента, о котором вы говорите. Кроме того, я обновил свой код до того, как он в настоящее время прослушивает ваши советы. – osxoverkill

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