VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 265|回复: 14

关于sql数据库的操作

[复制链接]
10_avatar_middle
最佳答案
0 
在线会员 发表于 2020-3-23 17:18:45 | 显示全部楼层 |阅读模式
请问大家如何将sql数据库中读取的字段保存为txt格式的文件呢




上一篇:小白求指导
下一篇:35课求助
82_avatar_middle
最佳答案
14 
在线会员 发表于 2020-3-23 18:35:03 | 显示全部楼层
数据读取出来了,写到 txt 就可以啦
用C++搞吗,还是什么工具?
84_avatar_middle
最佳答案
0 
在线会员 发表于 2020-3-24 10:18:09 | 显示全部楼层
第一步,读还是数据库的那套 select 读出来
第二步, 写文件的那套 writefile 都成
10_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 7 天前 | 显示全部楼层
本帖最后由 chenjiawei666 于 2020-3-25 10:06 编辑
love_cctry 发表于 2020-3-23 18:35
数据读取出来了,写到 txt 就可以啦
用C++搞吗,还是什么工具?


数据读出来了,界面上也能显示,现在就不知道怎么把读出来的数据保存到txt文件中,对,c++,vs2013
10_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 7 天前 | 显示全部楼层
dwer 发表于 2020-3-24 10:18
第一步,读还是数据库的那套 select 读出来
第二步, 写文件的那套 writefile 都成

请大神指点一二,数据读取出来,并且在界面上能显示,如何把读取出来的数据保存到文件里
24_avatar_middle
最佳答案
0 
在线会员 发表于 5 天前 | 显示全部楼层
chenjiawei666 发表于 2020-3-25 10:09
请大神指点一二,数据读取出来,并且在界面上能显示,如何把读取出来的数据保存到文件里

用 头文件<fsteam> 可以输出

ofstream 是输出(class)
                ofsteam fout; 这样就命名了一个文件名
        ·        ofstream::open; 或 ofstream fout("output.txt"); 两种打开文件方法,当文件名不存在时会自动创建一个文件
                fout 的使用方法和 cout 一样,由 << 来赋值
                fout << flush 可以在不关闭文件的时候保存文件
                fout.close(); 可以关闭文件,在关闭的同时自动保存文件

  1. void save_return(MYSQL_RES* result, string output_file) {
  2.         unsigned int num_fields, i, Lines = 0;
  3.         unsigned long* lengths;
  4.         MYSQL_ROW row;
  5.         MYSQL_FIELD* field;
  6.         ofstream fout;

  7.         fout.open(output_file);

  8.         num_fields = mysql_num_fields(result);

  9.         while ((field = mysql_fetch_field(result))) {
  10.                 fout << '|' << field->name << '|';
  11.         }
  12.         fout << endl;

  13.         while ((row = mysql_fetch_row(result))) {
  14.                 unsigned long* lengths;
  15.                 lengths = mysql_fetch_lengths(result);

  16.                 for (i = 0; i < num_fields; i++) {
  17.                         fout << "|" << '(' << (int)lengths[i] << ')' << row[i] << "|";
  18.                 }
  19.                 Lines++;
  20.                 fout << endl;
  21.         }

  22.         fout << num_fields << " Column, " << Lines << " Lines" << endl;
  23.         fout.close();
  24. }
复制代码

10_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 4 天前 | 显示全部楼层
zifa25796 发表于 2020-3-27 22:02
用 头文件 可以输出

ofstream 是输出(class)

我用的数据库是sql2008,请问跟MySql是一样的吗
24_avatar_middle
最佳答案
0 
在线会员 发表于 3 天前 | 显示全部楼层
chenjiawei666 发表于 2020-3-28 10:37
我用的数据库是sql2008,请问跟MySql是一样的吗

你不是已经数据读取出来了吗,这个头文件 fstrem 只是一个帮你把数据输入的倒 txt 里的头文件,和你用什么数据库没关系,我当中有关于 mysql 的函数只是从数据中读取出来数据,fout 才是把读出来的保存到 txt 文件中
10_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 3 天前 | 显示全部楼层
zifa25796 发表于 2020-3-29 06:43
你不是已经数据读取出来了吗,这个头文件 fstrem 只是一个帮你把数据输入的倒 txt 里的头文件,和你用什 ...

好的,谢谢,我试试看
10_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 前天 11:51 | 显示全部楼层
zifa25796 发表于 2020-3-29 06:43
你不是已经数据读取出来了吗,这个头文件 fstrem 只是一个帮你把数据输入的倒 txt 里的头文件,和你用什 ...

真的没看懂,能麻烦您具体说说咋操作吗,小白一枚
24_avatar_middle
最佳答案
0 
在线会员 发表于 前天 21:35 | 显示全部楼层
chenjiawei666 发表于 2020-3-30 11:51
真的没看懂,能麻烦您具体说说咋操作吗,小白一枚

你之前已经获取了数据库的数据不是吗?还是说只是 select 显示了出来?如果只是显示了出来你要去找“读取”它的函数,就是把数据储存到一个变量里,之后再用我说的头文件。
24_avatar_middle
最佳答案
0 
在线会员 发表于 前天 21:43 | 显示全部楼层
chenjiawei666 发表于 2020-3-30 11:51
真的没看懂,能麻烦您具体说说咋操作吗,小白一枚

这是我找了一下找到的,但是我看不懂sql 2008,所以你看一下,有没有帮助
你自己也去找一下,肯定有这样的函数,我的提意是分两头找,一个找如何从数据库导到文本,一个是如何提取数据到变量,两种办法都可行

  1. /** 导入文本文件 */
  2. EXEC master..xp_cmdshell 'bcp dbname..tablename in c:\DT.txt -c -Sservername -Usa -Ppassword'

  3. /** 导出文本文件 */
  4. EXEC master..xp_cmdshell 'bcp dbname..tablename out c:\DT.txt -c -Sservername -Usa -Ppassword'

  5. EXEC master..xp_cmdshell 'bcp "Select * from dbname..tablename" queryout c:\DT.txt -c -Sservername -Usa -Ppassword'

  6. /**导出到TXT文本,用逗号分开*/
  7. exec master..xp_cmdshell 'bcp "库名..表名" out "d:\tt.txt" -c -t ,-U sa -P password'


  8. BULK INSERT 库名..表名
  9. FROM 'c:\test.txt'
  10. WITH (
  11. FIELDTERMINATOR = ';',
  12. ROWTERMINATOR = '\n'
  13. )
复制代码
10_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 昨天 11:08 | 显示全部楼层
zifa25796 发表于 2020-3-30 21:35
你之前已经获取了数据库的数据不是吗?还是说只是 select 显示了出来?如果只是显示了出来你要去找“读取 ...

应该是select显示出来了,就是采用ado的方式完了用ListCtrl控件显示出来
24_avatar_middle
最佳答案
0 
在线会员 发表于 昨天 22:00 | 显示全部楼层
chenjiawei666 发表于 2020-3-31 11:08
应该是select显示出来了,就是采用ado的方式完了用ListCtrl控件显示出来

嗯嗯,那你就需要把它的数据先储存到自己的程序这里,在导到文件里
https://blog.csdn.net/imsasuke/article/details/6040193
这个帖子就不错
10_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 9 小时前 | 显示全部楼层
zifa25796 发表于 2020-3-31 22:00
嗯嗯,那你就需要把它的数据先储存到自己的程序这里,在导到文件里
https://blog.csdn.net/imsasuke/art ...

可是用记录集对象不就已经把数据的记录读到本地的内容中了吗,这个我已经用记录集对象了,应该是已经保存下来了吧
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-4-1 19:55

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表