我的大脑中有一个相对简单的任务,但它比预期的要困难得多,因为我无法让它发挥作用。我在 C# 中工作,试图将 csv 文件中的数据解析为 DataTable,然后我想将其插入 SQL 数据库。我想这样做,以便将来可以从数据库文件中工作(我希望它比 CSV 文件更快、更容易,但请告诉我这是否是一个错误的假设)。
我可以将数据放入数据表中。然后我重命名列以匹配数据库文件中的内容。然后我创建一个数据集并将数据表添加为数据集的“Table1”。
但是,当我从 SqlDataAdaptor 调用“更新”方法时,代码运行良好,只是数据库中的数据似乎没有更新!我猜我只是犯了一些愚蠢的小错误,所以我道歉,因为我是 C# 和 OOP 的新手。
以下是我尝试使用的代码:
SqlConnection con;
DataTable dt1;
SqlDataAdapter da;
private void Form1_Load(object sender, EventArgs e)
{
con = new SqlConnection();
con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\dbTestCSV.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
con.Open();
string sql = "SELECT * FROM tblTestCSV";
da = new SqlDataAdapter(sql, con);
SqlCommandBuilder cb;
cb = new SqlCommandBuilder(da);
dt1 = ParseCSV("C:\\testcsv2.csv");
dt1.Columns[0].ColumnName = "Numbers";
dt1.Columns[1].ColumnName = "Col1";
dt1.Columns[2].ColumnName = "Col2";
dt1.Columns[3].ColumnName = "Col3";
dt1.Columns[4].ColumnName = "Col4";
dt1.Columns[5].ColumnName = "Col5";
foreach (DataRow dr in dt1.Rows)
{
dr.SetModified();
}
DataSet ds1 = new DataSet();
ds1.Tables.Add(dt1);
da.Fill(ds1);
da.Update(ds1,"Table1");
dataGridView1.DataSource = dt1;
con.Close();
da.Dispose();
MessageBox.Show("sql server table data updated!");
}
我浏览了互联网和 stackoverflow,但我遇到的所有解决方案要么不理解,要么不起作用。谢谢你的时间。
编辑:我已经改变了一些代码,所以我不会在命令生成器之后重新声明数据适配器。但是,它仍然没有更新数据库,尽管代码运行时没有抛出任何东西,并且最后的消息框弹出,然后是我的表单,其中包含来自 dt1 的数据。
澄清一下,我没有从数据库中获取数据。我正在尝试从 CSV 文件中获取数据并将其移动到数据库中。感谢你目前的帮助。还有其他建议吗?
编辑2:DataTable“dt1”的结构如下:
标题:数字 Col1 Col2 Col3 Col4 Col5
数据类型:int32 Str Str Str Str Str
有 25 行。
dbTestCsv.mdf文件中的表如下:
标题:数字 Col1 Col2 Col3 Col4 Col5
数据类型:int nvarchar(50) -->
还没有行/数据。
编辑3:嘿哟!!得到它的工作。它本质上是这里建议的混合体,所以谢谢大家!