我的数据库sss中有上千条记录,其中有几个字段是text类型,需要存放的文本内容很大,所以我在数据库字段中改存文本文件的完整路径。
请问高手:如何根据数据库表中文件的路径,按行读取文本文件的内容(我想从第二行开始读,文本中是以回车换行的)到数组,并能显示出来。
我个人觉得可以用数据流来实现,但是具体怎么做不是很清楚。要求用vc实现,有参考代码的更好,回答好的我会追加得分的哈
谢谢!
请问高手:如何根据数据库表中文件的路径,按行读取文本文件的内容(我想从第二行开始读,文本中是以回车换行的)到数组,并能显示出来。
我个人觉得可以用数据流来实现,但是具体怎么做不是很清楚。要求用vc实现,有参考代码的更好,回答好的我会追加得分的哈
谢谢!
>this is|45613-567789|mmmm
AAAAFFFGGGTTTASSSDFFG
ASDFFFFGGGHJHJKKLKKLL
SRGFGHHJKJKLLJLJLJLLJ
JHLLLL
想从第二行开始一行一行地读人数据。有比较完整的vc代码吗?
CStdioFile file;
file.Open("test.txt",CFile::modeRead | CFile::modeWrite);
CString strTemp;
file.ReadString(strTemp);
跟 ADO 一点关系没有,不要混起来。MFC 中用 CStdioFile 类处理即可。
是不是把这个路径去出来赋给一个变量,然后把它作为file.Open()的第一个参数?
在高手面前我是笨哈,最近脑壳有点短路了。
如果高手还能帮我提供点思路更好,就是读取之后用那种来存更适合字符串的查找。
万分感谢
http://www.vckbase.com/document/viewdoc/?id=1215
http://www.vckbase.com/document/viewdoc/?id=610
1. 首先可以把文件的内容存储到数据库中,而不是单纯的一个文件名。这样你从数据库中读取出来的数据可以直接保存成文件。
这个可以参考:http://blog.csdn.net/primer_programer/archive/2008/07/01/2602305.aspx
2. 第一步结束后,就是怎么读文件的问题了。使用CStdioFile 访问怎样访问数据库可以参考:
http://blog.csdn.net/primer_programer/archive/2008/05/12/2436388.aspx
题目要求:将基因序列存入数据库,并查找序列中的串联重复序列(应涉及到字符串匹配算法,想用后缀数组实现).
我建立的数据库sss中,有id(序列编号),name(基因名称),data(基因序列,text类型),repeatdata(重复基因序列,text类型),由于后两个字段中存储的字符有上万个,且我下载的序列文件格式是第一行是说明字段,从第二行起才是真正要用的序列字符串,格式如下:
>this is ¦45613-567789 ¦mmmm
AAAAFFFGGGTTTASSSDFFG
ASDFFFFGGGHJHJKKLKKLL
SRGFGHHJKJKLLJLJLJLLJ
JHLLLL (每行字段以回车换行)
原来我是想把序列字符直接存在数据库data(text类型)中,但是数据量太大,用execl无法导入,于是先导入了前两个字段,不知道如何把这些序列根据表中已经有的id导入data字段.后来想到把整个文件存入(文件近两千个),但似乎更新的时候不行.于是又想到数据库中只存文件的全路径,然后在进行字符串查找的时候再根据此路径将文件中的基因序列(说明字段除外)读入到数组中,进行串联重复字段的查找.
自己基础不太好,现在身边又没什么参考资料,所以才向各位高手求教!
我用vc创建了一个mfc应用,建立了一个单文档,现在不知道在什么地方实现mfc的CStdioFile类.在使用这个类把文件中的序列字符(说明字段除外)按行逐字符读入到数组中时,怎么根据序列长度分配数组大小呢?是否还有更好的实现方法?
现在我想解决的问题是:
1、数据库中到底存序列文件,序列字符串本身还是路径更好?如何根据表中已经有的序列编号存入data字段?
2、如何把序列字符串读入数组,以便进行后面的查找?
注:我才刚开始学vc,对mfc的应用也不熟悉,请高手指教,提供一些参考代码和文章。
万分感谢!
2.如文件比较大,或者数量比较多,那么用存路径的方法比较好,也很方便..我不知道你会不会用ADO进行数据库编程,如果你会的话,这实际上是非常简单的操作!
比如你可以在数据库表中定义filename字段,其中存放的字符串为文件路径: d:\test\test.txt
然后在VC中用ADO连接数据库,并打开该表,取得filename字段的值:
_variant_t var = m_pRs->GetCollect("filename");
if(var.vt != VT_NULL)
CString strFilename = (LPCSTR)_bstr_t(var);这时候strFilename中存放的就是"d:\test\test.txt"字符串,接下来用CStdioFile读取就可以了:
CStdioFile file;
file.Open(strFilename ,CFile::modeRead ¦ CFile::modeWrite);
CString strTemp;
file.ReadString(strTemp); //每调用一次这条语句,读取文件的一行..
你的意思我大概能理解,自己vc编程就是比较差,现在才开始学。
CStdioFile是从第一行开始读的,我要从第二行读,该怎么办?
那个CString变量我可以设置为数组吗?我进行字符串查找的时候想用数组,数组一般是要预先分配大小的啊?我怎么把CString变量里的字符串存到数组呢?
我建立了一个工程,可是不知道在什么地方实现CStdioFile类,能介绍一下用mfc的操作步骤吗?
请赐教!
每调用一次上面的语句,就会读取一行字符串,你自己设个变量对调用次数计数就能针对具体哪行进行读取了..
如:
CString strTemp;
int i = 0;
while(file.ReadString(strTemp))
{
i++;
CString output;
output.Format("第%d行字符串为:",i,strTemp);
AfxMessageBox(output);
} CString你也可以当做字符数组进行处理的..可以根据下标访问其中的任意字符CStdioFile不需要你实现,你只要把下面的代码写在你的程序中就直接在用了:
CStdioFile file;
file.Open(strFilename ,CFile::modeRead ¦ CFile::modeWrite);
CString strTemp;
file.ReadString(strTemp); //每调用一次这条语句,读取文件的一行..
接下来就是ADO数据库操作:
打开数据库-》查询表-》GetFieldValue得到文件路径就可以了
能否举个将CString当作数组用的例子?我把文件从第二行开始到文件末的所有序列存入数据,并显示出来该怎么做啊?我看其他资料在创建数组时就分配了大小,我怎么根据文件中字符串的个数给数据分配空间呢?
我在程序中的任何一个成员函数中都可以直接用CStdioFile file,不需要类声明或引用什么特别的头文件吗?
CString strTemp="tyz";
for(int j=0;j<strTemp.GetLength();j++)
{
CString temp;
temp.Format("%c",strTemp.GetAt(j));
AfxMessageBox(temp);
}CStdioFile 可直接使用,什么都不需要包含..
tabby把文件路径赋给的是变量StrFilename吧?还是我理解错了,我怎么在自己的下载的msnd上查不到file.ReadString(strTemp)函数的意思呢