C# 将新行从文本文件插入数据库
让我首先说这是我第一个真正的c应用程序,所以我知道可能有更有效的方法,但这是我的第一次尝试。无论如何,应用程序的目的是从逗号分隔的文件中读取数据,分隔该逗号分隔文件的每个元素,然后将这些元素导入数据库中的行中。我现在被困在我的尝试和捕捉短语中,每次它都会被捕捉到,所以它永远不会连接到我的数据库。任何提示、提示或帮助都将不胜感激 当前错误:System.Data.dll中发生“System.InvalidOperationException”类型的未处理异常 附加信息:连接必须有效且打开C# 将新行从文本文件插入数据库,c#,mysql,C#,Mysql,让我首先说这是我第一个真正的c应用程序,所以我知道可能有更有效的方法,但这是我的第一次尝试。无论如何,应用程序的目的是从逗号分隔的文件中读取数据,分隔该逗号分隔文件的每个元素,然后将这些元素导入数据库中的行中。我现在被困在我的尝试和捕捉短语中,每次它都会被捕捉到,所以它永远不会连接到我的数据库。任何提示、提示或帮助都将不胜感激 当前错误:System.Data.dll中发生“System.InvalidOperationException”类型的未处理异常 附加信息:连接必须有效且打开 usin
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";
}
}
}
}
}
您的问题是您正在创建用于Sql Server的SqlConnection。您必须创建MySql连接,并确保将MySql客户端dll链接到您的项目 还要确保创建MySqlCommand而不是SqlCommand 区别在于Sql。。类用于SqlServer数据库。MySql类用于MySql数据库 绑定参数:
var cmd = new MySqlCommand("insert into p4gradetable_copy (Grade, CoilingTemp ) VALUES(@Grade, @CoilingTemp)";
仅指定两列用于说明。您正在接受一条非常有用的异常消息,说明为什么它无法连接到一条非常无用的为什么它无法工作的消息。摆脱try-catch并处理错误我按照您的建议执行了操作并收到了错误System.Data.SqlClient.SqlException类型的未处理异常发生在System.Data.dll中。当我做类似的事情时,我发现这是一个有用的指针。你能告诉我你在说什么吗?我真的不知道两者在引用方面有什么不同。你必须在你的机器上安装MySql Data client for.Net。必须链接的dll是MySql.Data.Client dll。这是MySql数据库的数据提供程序,您必须引用到项目中。在代码中包含using子句MySql.Data.MySqlClient。然后用mysqlconnection替换代码中的SqlConnetion。我去了SQL网站,下载了mysqlconnectnet文件,并将其添加为我当前项目的参考。但是,我仍然没有看到您正在谈论的客户机文件。此外,在听取您的所有建议后,我已将代码更新为当前状态。您添加的文件名是什么?你下载过.Net的MySql客户端吗?我也更新了我的答案。请查看此链接以添加到您的项目中,vb是否与c类似: