MFC+mongodb+nodejs 数据库的读取与写入操作
首先通过nodejs和mongodb建立后端服务器
一、在windows平台下启动mongodb服务器
1、进入mongodb的安装目录,并进去bin目录启动mongod
2、在d盘建立mongodb\data文件夹作为数据存储目录
mongod.exe --dbpath d:\mongodb\data
二、建立js文件,并通过nodejs启动
1、当向服务器发送01指令时,服务器将从mongodb 读取数据,并返回
var HOST = "localhost";
var PORT = 6969;
var dgram = require('dgram');
var server_udp = dgram.createSocket('udp4');
var mongo=require("mongodb");
var DB_PORT=27017;
var server_database=new mongo.Server(HOST,DB_PORT,{auto_reconnect:true});
var db=new mongo.Db("test",server_database,{safe:true}); db.open(function (err,db) {//连接数据库
if(err)
{
console.log("error");
throw err;
}
else{
db.collection("student", function (err,collection) {
collection.insert({ name:"jinjian",score:"100"}, function (err,docs) {
console.log(docs);
db.close(false);
});
});
}
}); server_udp.on('listening',function(){
var address = server_udp.address();
console.log("server listening " + address.address + " : "+ address.port);
console.log("\n");
}); server_udp.on('message',function(message,remote){ console.log(""+message);
switch( ""+message)
{
case ("01"):
{
console.log("receive 01");
db.open(function (err,db) {
db.collection("student", function (err,collection) {
if(err) throw err;
else{
collection.find({}).toArray(function(err,docs){
if(err) throw err;
else{
var str = JSON.stringify(docs);
server_udp.send(str,0,str.length,6967,remote.address);
console.log(str);
db.close(false);
}
});
}
});
});
break;
} case ("02"):
{
console.log("receive 02");
break;
} case ("03"):
{
console.log("receive 03");
break;
} }
console.log(remote.address +":" + message );
console.log("\n"); });
server_udp.bind(PORT,HOST);
三、编写MFC界面
1、MFC接受到数据后解析代码如下(程序使用了jsoncpp-json数据解析库)
Json::Reader reader;
Json::Value json_object;
int len = strlen((char *)lParam);
char* temp = new char [len];
memcpy(temp,(char *)lParam,len); if (!reader.parse(temp, json_object))
return 0;
int size = json_object.size(); const Json::Value arrayObj = json_object;
for (int i=0; i<arrayObj.size(); i++){
string id = arrayObj[arrayObj.size()-1-i]["number"].asString();
string name= arrayObj[arrayObj.size()-1-i]["name"].asString();
string score = arrayObj[arrayObj.size()-1-i]["score"].asString(); int n = m_list.InsertItem(0,id.c_str());
m_list.SetItemText(n,1,name.c_str());
m_list.SetItemText(n,2,score.c_str()); //fprintf(pfOutput, "%s\n",id.c_str());
//fprintf(pfOutput, "%s\n",firstname.c_str());
//fprintf(pfOutput, "%s\n",username.c_str());
}
四、测试读取数据库,MFC向数据库发送“01”指令,并将返回的数据显示在列表中

1、向mongodb插入数据。进入mongodb程序的bin目录
D:\Mongodb\bin>mongo
>use test
db.student.insert({"01":"x1","02","x2",.....});
2 MFC读取效果如下

MFC+mongodb+nodejs 数据库的读取与写入操作的更多相关文章
- 数据库并行读取和写入(Python实现)
这篇主要记录一下如何实现对数据库的并行运算来节省代码运行时间.语言是Python,其他语言思路一样. 前言 一共23w条数据,是之前通过自然语言分析处理过的数据,附一张截图: 要实现对news主体的读 ...
- java文件创建、删除、读取、写入操作大全
一.获得控制台用户输入的信息 public String getInputMessage() throws IOException...{ System.out.println("请输入您的 ...
- php以数组做为配置文件的读取和写入操作
最近想用php开发个简单的文章管理系统,主要是做一批垃圾采集站,目前网上的cms都太多功能了,导致修改个模板要很多文件,花费很多功夫.开始用thinkphp框架做,感觉还是麻烦,后来改用ci,做好了后 ...
- java===java基础学习(5)---文件读取,写入操作
文件的写入读取有很多方法,今天学到的是Scanner和PrintWriter 文件读取 Scanner in = new Scanner(Paths.get("file.txt") ...
- 记-Golang日志文件读取及写入操作
Golang语言的 os 包中OpenFile 函数,如下所示: func OpenFile(name string, flag int, perm FileMode) (*File, error) ...
- testbench的设计 文件读取和写入操作 源代码
十大基本功之 testbench 1. 激励的产生 对于 testbench 而言,端口应当和被测试的 module 一一对应.端口分为 input,output 和 inout 类型产生激励信号的时 ...
- 用Java实现对英文版《飘》的文件读取与写入操作
从文件读入<飘>的英文版,并将结果输出到文件中 要求一: 实现对英文版<飘>的字母出现次数统计 package File; import java.io.FileInputSt ...
- 表数据文件DBF的读取和写入操作
import sys import csv import struct import datetime import decimal import itertools from cStringIO i ...
- C#读取和写入XML文件
关于xml是属于一个比较重要的东西,在平时开发的过程中,这块内容最主要的是要掌握XML内容的读取和写入操作. 一.什么是XML? XML 指可扩展标记语言(EXtensible Markup Lang ...
随机推荐
- ipfs docker 运行试用
ipfs 是一个分布式,p2p 的文件系统,参考了git.bt.sfs 以及web 的设计 环境准备 docker-compose 文件 version: "3" services ...
- 24 正则表达式 re模块
一.正则表达式 1.字符组 ① [abc] 匹配a或b或c ② [a-z] 匹配a到z之间的所有字⺟ [0-9]匹配所有阿拉伯数字 2.元字符 3.量词 4.重要搭配 ① .*? ② .*?x ...
- Logstash的grok以及Ruby
logstash的grok插件的用途是提取字段,将非格式的内容进行格式化, input { file { path => "/var/log/http.log" } } fi ...
- NET设计模式 第二部分 行为型模式(18):观察者模式(Observer Pattern)
概述 在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知.如果这样的依赖关系过于紧密,将使软件不能很好地抵御 ...
- 在Hanlp词典手动添加未登录词的方式介绍
在使用Hanlp词典进行分词的时候,会出现分词不准的情况,原因是内置词典中并没有收录当前这个词,也就是我们所说的未登录词,只要把这个词加入到内置词典中就可以解决类似问题,如何操作呢,下面我们来看一下: ...
- SparkStreaming整合kafka编程
1.下载spark-streaming-kafka插件包 由于Linux集群环境我使用spark是spark-2.1.1-bin-hadoop2.7,kafka是kafka_2.11-0.8.2.1, ...
- 集群RedHat6.5+JDK1.8+Hadoop2.7.3+Spark2.1.1+zookeeper3.4.6+kafka2.11+flume1.6环境搭建步骤
1.RHEL 6.5系统安装配置图解教程(rhel-server-6.5) 2.在Linux下安装JDK图文解析 3.RedHat6.5上安装Hadoop集群 4.RedHat6.5安装Spark集群 ...
- 阿里巴巴Java编码规范,来测测你能得多少分
今年年初,<阿里巴巴Java开发手册>正式发布,阿里官方Java代码规范标准首次对外公开.手册发布之后在业界.学术界都获得了广泛的关注,仅微博浏览量就突破千万,下载访问量超过40万,多家媒 ...
- Linux之poll机制分析
应用程序访问1个设备文件时可用阻塞/非阻塞方式.如果是使用阻塞方式,则直接调用open().read().write(),但是在驱动程序层会判断是否可读/可写,如果不可读/不可写,则将当前进程休眠,直 ...
- 多wan示意图
此时计算机的网关可以任意选择其中的一台路由器的ip地址.