//用创建进程的方式执行mysql命令把文件数据导入数据到数据库
一.直接执行
char cmdline[2048];
memset(cmdline,0,2048);
sprintf(cmdline,"mysql -h%s -u%s -p%s -D%s < /"%s/"",sSererIp,sUsname,sPsw,sDataName,wfsqlname);
system( cmdline);
二、创建进程的方式执行
BOOL brunsucc = FALSE;
char cmdline[2048];
memset(cmdline,0,2048);
//注意没有 < /"%s/"
sprintf(cmdline,"mysql -h%s -u%s -p%s -D%s",sSererIp,sUsname,sPsw,sDataName);
SECURITY_ATTRIBUTES SecAtrrs={0};
SecAtrrs.nLength=sizeof(SecAtrrs);
SecAtrrs.lpSecurityDescriptor=NULL;
SecAtrrs.bInheritHandle=TRUE;
HANDLE hInputFile = CreateFile(wfsqlname,
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
&SecAtrrs,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL| FILE_FLAG_WRITE_THROUGH,
NULL);
if (hInputFile != INVALID_HANDLE_VALUE)
{
PROCESS_INFORMATION process;
STARTUPINFO startupInfo={0};
startupInfo.cb=sizeof(STARTUPINFO);
startupInfo.dwFlags=STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
startupInfo.wShowWindow =SW_HIDE;
startupInfo.hStdInput=hInputFile;
startupInfo.lpReserved=NULL;
startupInfo.lpReserved2=NULL;
startupInfo.lpDesktop=NULL;
BOOL bcrtps=CreateProcess(NULL,
cmdline,
NULL,
NULL,
TRUE,
NORMAL_PRIORITY_CLASS,
NULL,
NULL,
&startupInfo,&process);
if (bcrtps)
{
if (WaitForSingleObject(process.hProcess, INFINITE) == WAIT_FAILED)
{
CloseHandle(process.hThread);
CloseHandle(process.hProcess);
}
else
{
CloseHandle(process.hThread);
CloseHandle(process.hProcess);
brunsucc = TRUE;
...
}
}
CloseHandle(hInputFile);