C#写个文本文件导入数据库的程序
文本文件(text.txt)里有有若干道试题,格式是这样 这是其中一道,题目和选项一列,答案一列。"为切实加强易做图信息网络安全管理工作,规范易做图机关人民易做图使用易做图信息网,落实( )的管理责任制,根据《中华人民共和国人民易做图法》、《中华人民共和国计算机信息系统安全保护条例》等有关法律、法规,制定本规定。A 谁主管、谁负责B 谁使用、谁负责C 谁负责、谁使用D 谁负责、谁主管",
"AB"
导入数据库pubs下的test表中,题目和试题对应表中的STNR和STDA这两列
...
文本文件里很多道题目一下考进数据库中,用c#写个程序来实现这个功能,如何实现
要求用c#写个程序 --------------------编程问答-------------------- 还没搞过呢!! --------------------编程问答-------------------- 用Bulk Insert语句
如果列的分割不明显或者容易混淆,你可对文本做与处理,
然后用Bulk Insert语句把数据倒入
Bulk Insert tablename from 'C:/A.txt' with(Fieldterminator='|',rowterminator='\r') --------------------编程问答-------------------- public class 试题
{
private string _题目;
private string _答案;
public string 题目
{
get{ return _题目;}
set{ _题目 = value;}
}
public string 答案
{
get {...} set {...}
}
}
public class Run
{
private IList<试题> 读取试题()
{
IList<试题> list;
StreamReader din = new StreamReader( File.OpenRead("text.txt") );
int flag = 0; 试题 my试题 = new 试题();
do {
str = din.ReadLine();
flag++;
if (str != null) {
if(flag%2 != 0) {
my试题.题目 = din.readLine();
}
else {
my试题.答案 = din.readLine();
list.add(my试题.);
my试题 = new 试题();
}
}
} while ( str != null );
return list;
}
static void main()
{
IList<试题> 试题集合 = 读取试题();
for(int i=0; i<试题集合.length; i++) {
string sql = string.Format(
"insert into test values '{0}','{1}' ",
试题集合[i].试题, 试题集合[i].答案
);
...ExecuteNoneQuery(sql,...);
}
}
}
--------------------编程问答-------------------- 把你的文本做一下修改.将每个问题(包括选择内容)与正确答案都放在一行里,问题(包括选择内容)与正确答案之间用一个文本里绝对不会出现的符号(或符号集合,比如"<",或者"<>")分隔开.
用文件流读取该文本文件,读一行,就按照该特殊符号切开字符串为两部分,将取得的问题和答案,分别放到INSERT语句中的对应位置.依次类推循环文本中的每行即可.个人认为最好在表中再加个"ID"或者"题号"字段用以区别每条记录比较好,将来如果用到查找或者其他处理也比较方便.
具体代码可以参考3楼的,他写的不错,但是在取得数据上面,他所要读取的行太乱,如果文本中哪个位置不小心多留了一个空行,存入数据库的结果将会发生毁灭性的错误.而采用我说的方法,就算漏掉了某个分隔符,整行也会按顺序被存入数据库,实在不行你还可以手动修改一下.就算是有错误也并不太难挽回.
你只要将3楼的这段
if (str != null) {
if(flag%2 != 0) {
my试题.题目 = din.readLine();
}
else {
my试题.答案 = din.readLine();
list.add(my试题);
my试题 = new 试题();
}
}
改为:
if (str != null) {
my试题 = new 试题();
string []str = din.readLine().split("<你的分隔符>");
my试题.题目 = str[0];
my试题.答案 = str[1];
list.add(my试题);
}
其他代码大可照搬 --------------------编程问答-------------------- jet 4.0可以直接连接逗号分割的文本文件,把你的文本文件所在的文件夹当数据库,用OpenDataSource打开,然后来个Select into语句就搞定了,看你的文本,似乎第一行不是列名,你可以先用代码把文本文件的第一行加上列名好一些
具体语法,查Access帮助的In子句以及SqlServer的OpenDataSource --------------------编程问答-------------------- text.txt第一行加上
STNR,STDA
假设text.txt在C:\Data文件夹下
SELECT * into pubs.test
FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
'Data Source="C:\Data";User ID=Admin;Password=;Extended Properties=text')...text#txt
补充:.NET技术 , C#