您的位置:程序门 -> vc/mfc -> 网络编程



vc通过winsock进行数据通信数据库不能写入问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


vc通过winsock进行数据通信数据库不能写入问题
发表于:2007-05-30 17:02:25 楼主
各位专家,最近小弟遇到一数据库不能写入的问题,经过多方研究之后还是不能解决,还请各位高人支招,小弟在此谢过了,高分求解决方案.

 问题:vc下用winsock进行数据通信时,客户端发送数据到服务器端,客户端能够正确的将数据库中的数据发送到服务器端,服务器端也能收到数据,但是服务器端不能将其接收到的数据写入数据库.

 不知道问题出在什么地方,还请各位帮忙给提示提示.
发表于:2007-05-30 17:18:151楼 得分:0
问题太抽像了
发表于:2007-05-30 17:21:542楼 得分:0
跟踪一下服务器端写数据库的过程
发表于:2007-05-31 09:02:393楼 得分:0
跟踪过服务器端,不过一到写记录进数据库的位置就弹出错误消息框
发表于:2007-05-31 09:07:174楼 得分:0
最好是把出问题的代码帖出来,然后是把弹出的错误框里的内容也帖出来。
不然光说是出了问题,我们也不知道要从哪入手。
发表于:2007-05-31 09:08:435楼 得分:0
有道理,一会把代码贴出来
发表于:2007-05-31 10:04:076楼 得分:0
客户端:
   
    coinitialize(null);

_connectionptr   pconn(__uuidof(connection));
_recordsetptr   prst(__uuidof(recordset));
_commandptr   pcmd(__uuidof(command));

pconn-> open( "dsn=dgb ", " ", " ",-1);///连接数据库


prst=pconn-> EXECute( "select   *   from   数据表 ",null,adcmdtext);

  while(!prst-> rseof)
{
word   wversionrequested;
wsadata   wsadata;
int   err;
wversionrequested   =   makeword(1,   1   );

err   =   wsastartup(   wversionrequested,   &wsadata   );
if   (   err   !=   0   )   {
return;
}

if   (   lobyte(   wsadata.wversion   )   !=   1   ¦ ¦
hibyte(   wsadata.wversion   )   !=   1   )   {
wsacleanup(   );
return;  
}

socket   sockclient=socket(af_inet,sock_stream,0);

sockaddr_in   addrsrv;
addrsrv.sin_addr.s_un.s_addr=inet_addr( "127.0.0.1 ");
addrsrv.sin_family=af_inet;
addrsrv.sin_port=htons(6000);
connect(sockclient,(sockaddr*)&addrsrv,sizeof(sockaddr));

char   recvbuf[100]= "   ";     //接受服务器发过来的数据

recv(sockclient,recvbuf,100,0);

char   a1[100];
float   b1=0.00,b2=0.00,b3=0.00,b4=0.00,b5=0.00,b6=0.00,b7=0.00,b8=0.00,b9=0.00,b10=0.00;

b1=prst-> getcollect( "b1 ");
                   
b2=prst-> getcollect( "b2 ");

b3=prst-> getcollect( "b3 ");

b4=prst-> getcollect( "b4 ");

b5=prst-> getcollect( "b5 ");

b6=prst-> getcollect( "b6 ");

b7=prst-> getcollect( "b7 ");

b8=prst-> getcollect( "b8 ");

b9=prst-> getcollect( "b9 ");

b10=prst-> getcollect( "b10 ");

sprintf(a1, "%0.2f,%0.2f,%0.2f,%0.2f,%0.2f,%0.2f,%0.2f,%0.2f,%0.2f,%0.2f  

",b1,b2,b3,b4,b5,b6,b7,b8,b9,b10   );

                                              cstring   kk=recvbuf;

if(kk== "ok ")
{
send(sockclient,a1,strlen(a1)+1,0);
prst-> movenext();
}

closesocket(sockclient);
wsacleanup();

}

prst-> close();
pconn-> close();
pcmd.release();
prst.release();
pconn.release();
couninitialize();
发表于:2007-05-31 10:04:287楼 得分:0
服务器端:

   
      coledatetime   tm=coledatetime::getcurrenttime();
cstring   str_t=tm.format   ( "%s ");
if((atoi(str_t)-5)%30==0)
{
word   wversionrequested;
wsadata   wsadata;
int   err;
cstring   dd[15];
     
wversionrequested   =   makeword(   1,   1   );

err   =   wsastartup(   wversionrequested,   &wsadata   );
if   (   err   !=   0   )   {
return   ;
}


if   (   lobyte(   wsadata.wversion   )   !=   1   ¦ ¦
hibyte(   wsadata.wversion   )   !=   1   )   {
wsacleanup(   );
return   ;  
}

socket   socksrv=socket(af_inet,sock_stream,0);

sockaddr_in   addrsrv;
addrsrv.sin_addr.s_un.s_addr=htonl(inaddr_any);
addrsrv.sin_family=af_inet;
addrsrv.sin_port=htons(6000);

bind(socksrv,(sockaddr*)&addrsrv,sizeof(sockaddr));

listen(socksrv,15);

sockaddr_in   addrclient;
int   len=sizeof(sockaddr);

socket   sockconn=accept(socksrv,(sockaddr*)&addrclient,&len);
char   sendbuf[100];
sprintf(sendbuf, "ok ",inet_ntoa(addrclient.sin_addr));
send(sockconn,sendbuf,strlen(sendbuf)+1,0);
char   recvbuf[1024];
recv(sockconn,recvbuf,1024,0);

closesocket(sockconn);
wsacleanup();


  //   以下就是写入数据库的这一段代码

        coinitialize(null);

_connectionptr   pconn(__uuidof(connection));
_recordsetptr   prst(__uuidof(recordset));
_commandptr   pcmd(__uuidof(command));


cstring   datestr,timestr;
ctime   temptime=ctime::getcurrenttime();
ctime   tempdate=ctime::getcurrenttime();
datestr=tempdate.format( "%y-%m-%d ");
timestr=temptime.format( "%y-%m-%d   %h:%m:%s ");
                cstring   sql;
pconn-> open( "dsn=dgb ", " ", " ",-1);///连接数据库

prst=pconn-> EXECute( "select   *   from   新数据表 ",null,adcmdtext);

sql.format( "   insert   into   运行系统   values   ( '%s ',   '%s ',   %0.2f,   %0.2f,   %0.2f,   %0.2f,%0.2f,   %0.2f,   %0.2f,   %0.2f,  

%0.2f,   %0.2f,%0.2f,   %0.2f,   %0.2f,   %0.2f,   %0.2f,   %0.2f,%0.2f,   %0.2f,   %0.2f,   %0.2f,   %0.2f,%

0.2f) ",datestr,timestr,atof(m_gsh),atof(m_gxh),atof(m_gp1),atof(m_gp2),atof(m_gp3),atof(m_gp4),atof(m_ga1),atof

(m_ga2),atof(m_ga3),atof(m_ga4),atof(m_gf1),atof(m_gf2),atof(m_gf3),atof(m_gf4),atof(m_gh1),atof(m_gh2),atof

(m_gh3),atof(m_gh4),atof(m_gq1),atof(m_gq2),atof(m_gq3),atof(m_gq4)); //写入数据库      
//记录入库主表信息
try
{
prst=pconn-> EXECute((_bstr_t)sql,null,adcmdtext);
}
catch   (...)
{}
prst-> close();
pconn-> close();
pcmd.release();
prst.release();
pconn.release();
couninitialize();

  注:由于服务器段中间代码段太长,所有就剩去了一段代码,


快速检索

最新资讯
热门点击