通过 C# 代码从 CSV 文件插入访问表
Posted
技术标签:
【中文标题】通过 C# 代码从 CSV 文件插入访问表【英文标题】:INSERT INTO Access table from CSV file via C# code 【发布时间】:2013-10-06 11:56:48 【问题描述】:我有这张桌子:
Items
====
Barcode (text)
Des (text)
Price (double)
我在 d:\Items.csv
上制作了 csv 文件以便快速插入 (12345,computer,120.44).....
我尝试这样插入(C# WinForm 程序):
Cmd = Conn.CreateCommand();
SQL = @"INSERT INTO Items SELECT * FROM [Text;DATABASE=" + @"d:" + @"\].[Items.txt];";
Cmd.CommandText = SQL;
Cmd.ExecuteNonQuery();
但我得到了 2 个错误:
1. Data type mismatch in criteria expression.
2. The field 'Items.Barcode ' cannot contain a Null value because the Required property for this field is set to True. Enter a value in this field.
如何解决这个问题?
【问题讨论】:
你的SQL
在调试时是什么样子的?
您知道您有 d:\Items.csv,并且在您的代码中您有 Items.txt?文件存在吗?
【参考方案1】:
以下 C# 代码适用于我。它将C:\Users\Public\Items.csv
导入到我的Access 2010 数据库C:\Users\Public\Database1.accdb
中名为[Items] 的表中。 CSV文件的内容很简单
12345,computer,120.44
代码是
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Odbc;
namespace myDbTest
class Program
static void Main(string[] args)
string myConnectionString;
myConnectionString =
@"Driver=Microsoft Access Driver (*.mdb, *.accdb);" +
@"Dbq=C:\Users\Public\Database1.accdb;";
using (var con = new OdbcConnection())
con.ConnectionString = myConnectionString;
con.Open();
using (var cmd = new OdbcCommand())
cmd.Connection = con;
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText =
@"INSERT INTO Items " +
@"SELECT * FROM [Text;FMT=Delimited;HDR=NO;IMEX=2;CharacterSet=437;ACCDB=YES;Database=C:\Users\Public].[Items#csv];";
cmd.ExecuteNonQuery();
con.Close();
【讨论】:
以上是关于通过 C# 代码从 CSV 文件插入访问表的主要内容,如果未能解决你的问题,请参考以下文章
如何通过按钮单击将数据导出到 linq c# 中的 .csv 文件