问题描述
文本文件(text.txt)里有有若干道试题,格式是这样这是其中一道,题目和选项一列,答案一列。"为切实加强公安信息网络安全管理工作,规范公安机关人民警察使用公安信息网,落实()的管理责任制,根据《中华人民共和国人民警察法》、《中华人民共和国计算机信息系统安全保护条例》等有关法律、法规,制定本规定。A谁主管、谁负责B谁使用、谁负责C谁负责、谁使用D谁负责、谁主管","AB"导入数据库pubs下的test表中,题目和试题对应表中的STNR和STDA这两列...文本文件里很多道题目一下考进数据库中,用c#写个程序来实现这个功能,如何实现要求用c#写个程序
解决方案
解决方案二:
还没搞过呢!!
解决方案三:
用BulkInsert语句如果列的分割不明显或者容易混淆,你可对文本做与处理,然后用BulkInsert语句把数据倒入BulkInserttablenamefrom'C:/A.txt'with(Fieldterminator='|',rowterminator='r')
解决方案四:
publicclass试题{privatestring_题目;privatestring_答案;publicstring题目{get{return_题目;}set{_题目=value;}}publicstring答案{get{...}set{...}}}publicclassRun{privateIList<试题>读取试题(){IList<试题>list;StreamReaderdin=newStreamReader(File.OpenRead("text.txt"));intflag=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);returnlist;}staticvoidmain(){IList<试题>试题集合=读取试题();for(inti=0;i<试题集合.length;i++){stringsql=string.Format("insertintotestvalues'{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试题);}其他代码大可照搬
解决方案六:
jet4.0可以直接连接逗号分割的文本文件,把你的文本文件所在的文件夹当数据库,用OpenDataSource打开,然后来个Selectinto语句就搞定了,看你的文本,似乎第一行不是列名,你可以先用代码把文本文件的第一行加上列名好一些具体语法,查Access帮助的In子句以及SqlServer的OpenDataSource
解决方案七:
text.txt第一行加上STNR,STDA假设text.txt在C:Data文件夹下SELECT*intopubs.testFROMOpenDataSource('Microsoft.Jet.OLEDB.4.0','DataSource="C:Data";UserID=Admin;Password=;ExtendedProperties=text')...text#txt