zoukankan      html  css  js  c++  java
  • MFC+mongodb+nodejs 数据库的读取与写入操作

    首先通过nodejs和mongodb建立后端服务器

    一、在windows平台下启动mongodb服务器

    1、进入mongodb的安装目录,并进去bin目录启动mongod

    2、在d盘建立mongodbdata文件夹作为数据存储目录

    mongod.exe --dbpath d:mongodbdata
    

    二、建立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("
    ");
    });
    
    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("
    ");
      
    });
    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
    ",id.c_str());
    			//fprintf(pfOutput, "%s
    ",firstname.c_str());
    			//fprintf(pfOutput, "%s
    ",username.c_str());
    	}
    

    四、测试读取数据库,MFC向数据库发送“01”指令,并将返回的数据显示在列表中

    1、向mongodb插入数据。进入mongodb程序的bin目录

    D:Mongodbin>mongo

     >use test

    db.student.insert({"01":"x1","02","x2",.....});

    2 MFC读取效果如下

  • 相关阅读:
    BorderContainer 背景透明一不小心就解决了!
    C#编程应用线程与委托
    第二次SQL RAP要点
    最近的学习
    BW中传输的问题
    7月总结Dotnetnuke的研究总结
    EP学习要点记忆
    盲人摸象SAP PS模块的介绍与讨论
    如何跨Client删除数据
    如何修改Portal与BW系统的链接域名
  • 原文地址:https://www.cnblogs.com/xd-jinjian/p/5698491.html
Copyright © 2011-2022 走看看