真爱无限的知识驿站

学习积累技术经验,提升自身能力

UC编程9-管道pipe操作和共享内存段shm操作

//myuc.h

#include<stdio.h>//io流
#include<stdlib.h>//标准库
#include<unistd.h>//uc标准头文件
#include<fcntl.h>//文件控制
#include<string.h>//c字符串
#include<sys/types.h>
#include<sys/mman.h>//内存映射
#include<sys/stat.h>//文件状态信息
#include<sys/wait.h>//进程等等
#include<dirent.h>//目录操作
#include<signal.h>//信号
#include<sys/time.h>//时间,计时器
#include<sys/ipc.h>//ipc进程间通信
#include<sys/shm.h>//共享内存段
#include<sys/msg.h>//消息队列


//9piperead.c

UC编程8-信号发送函数kill/raise/setitimer/alarm和信号集函数segprocmask

//myuc.h

#include<stdio.h>//io流
#include<stdlib.h>//标准库
#include<unistd.h>//uc标准头文件
#include<fcntl.h>//文件控制
#include<string.h>//c字符串
#include<sys/types.h>
#include<sys/mman.h>//内存映射
#include<sys/stat.h>//文件状态信息
#include<sys/wait.h>//进程等等
#include<dirent.h>//目录操作
#include<signal.h>//信号
#include<sys/time.h>//时间,计时器
#include<sys/ipc.h>//ipc进程间通信
#include<sys/shm.h>//共享内存段
#include<sys/msg.h>//消息队列

//8itimer.c

UC编程7-进程创建函数fork/vfork 和 execl/信号signal的使用1

//myuc.h

#include<stdio.h>//io流
#include<stdlib.h>//标准库
#include<unistd.h>//uc标准头文件
#include<fcntl.h>//文件控制
#include<string.h>//c字符串
#include<sys/types.h>
#include<sys/mman.h>//内存映射
#include<sys/stat.h>//文件状态信息
#include<sys/wait.h>//进程等等
#include<dirent.h>//目录操作
#include<signal.h>//信号
#include<sys/time.h>//时间,计时器
#include<sys/ipc.h>//ipc进程间通信
#include<sys/shm.h>//共享内存段
#include<sys/msg.h>//消息队列

//exitwiat7.h

UC编程6-目录操作和创建子进程fork()函数1

//myuc.h

#include<stdio.h>//io流
#include<stdlib.h>//标准库
#include<unistd.h>//uc标准头文件
#include<fcntl.h>//文件控制
#include<string.h>//c字符串
#include<sys/types.h>
#include<sys/mman.h>//内存映射
#include<sys/stat.h>//文件状态信息
#include<sys/wait.h>//进程等等
#include<dirent.h>//目录操作
#include<signal.h>//信号
#include<sys/time.h>//时间,计时器
#include<sys/ipc.h>//ipc进程间通信
#include<sys/shm.h>//共享内存段
#include<sys/msg.h>//消息队列


UC编程5-fcntl函数获取文件状态和加锁解锁/dup函数和文件映射

//myuc.h

#include<stdio.h>//io流
#include<stdlib.h>//标准库
#include<unistd.h>//uc标准头文件
#include<fcntl.h>//文件控制
#include<string.h>//c字符串
#include<sys/types.h>
#include<sys/mman.h>//内存映射
#include<sys/stat.h>//文件状态信息
#include<sys/wait.h>//进程等等
#include<dirent.h>//目录操作
#include<signal.h>//信号
#include<sys/time.h>//时间,计时器
#include<sys/ipc.h>//ipc进程间通信
#include<sys/shm.h>//共享内存段
#include<sys/msg.h>//消息队列


oracle中join右表最多只取一条指定的数据

一般情况下,如果类型这种:

       select * from A
       left join B 
       ON A.con_id=B.con_id;

假设A中有1条数据,B中与A关联的数据有2条或以上,查出的结果是有2条或以上,有些情况我们需要以A表为准,B表只查想要的一条记录

bshare手动分享网址到QQ空间、朋友网等常用网站代码


//示例代码:

<div style="width: 190px;">
<script type="text/javascript" charset="utf-8" src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=2&lang=zh"></script>
<script type="text/javascript" charset="utf-8" src=" 

分享到:<br />
<div style="position: absolute;">
<p style="width: 280px; height: 50px; padding-top: 5px;">
<strong style="color: #939393;"></strong><span class="BSHARE_COUNT bshare-share-count">
0</span> <a title="分享到新浪微博"></a><a title="分享到搜狐微博"


今天做一个网站与另外一个网站整合,学会了视图在不同数据库中的使用

1、访问不同的sql服务器的数据库表,通过一个视图使用 OPENDATASOURCE  来完成。  

Create VIEW [dbo].[视图名称]  

AS  

Select *   

FROM OPENDATASOURCE(  

    'SQLOLEDB',   

    'PWD=密码;UID=用户名;Initial Catalog=数据库名;SERVER=服务器'  

个人使用七牛云服务API作为非黄钻QQ空间播放背景音乐的用法

七牛文档中心:http://developer.qiniu.com/


我就是做了一个页面使用API上传文件,然后获取上传的文件链接用在QQ空间,说一下使用音乐的步骤。

花几分钟做了个简单的使用教程。


个人后台登陆地址:/Admin/Auth/Login

c++将txt数据批量导入mysql数据库的例子

//包括多线程的使用,数据库的操作和打开文件对话框的使用。

#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include "resource.h"
#include "MainDlg.h"
#include <SQL.H>//连接库:odbc32.lib odbccp32.lib
#include <SQLEXT.H>//数据库头文件
#include <SQLTYPES.H>//数据库头文件
#include <COMMDLG.H>//OPENFILENAME 头文件
#include<STRING.H>
#define LOGIN_TIMEOUT 30
#define MAXBUFLEN 255
///#define CHECKDBSTMTERROR(hwnd,result,hstmt) 
char szFile[MAX_PATH];
BOOL ImportStatus = FALSE; //导入状态标志
SQLHENV henv = NULL;
SQLHDBC hdbc = NULL;
SQLHSTMT hstmt = NULL;
SQLRETURN result;
SQLCHAR ConnStrIn[MAXBUFLEN] = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=127.0.0.1;UID=root;PWD=123456;DATABASE=Test;CharSet=gbk;";
SQLCHAR ConnStrOut[MAXBUFLEN];
void ShowDBError(HWND hwnd,SQLSMALLINT type,SQLHANDLE sqlHandle)
{
    char pStatus[10], pMsg[101];
    SQLSMALLINT SQLmsglen;
    char error[200] = {0};
    SQLINTEGER SQLerr;
    long erg2 = SQLGetDiagRec(type, sqlHandle,1,
(SQLCHAR *)pStatus,&SQLerr,(SQLCHAR *)pMsg,100,&SQLmsglen);
    wsprintf(error,"%s (%d)
",pMsg,(int)SQLerr);
    MessageBox(hwnd,error,TEXT("数据库执行错误"),MB_ICONERROR|MB_OK);
}
void ShowDBConnError(HWND hwnd,SQLHDBC hdbc)
{
ShowDBError(hwnd,SQL_HANDLE_DBC,hdbc);
}
void ShowDBStmtError(HWND hwnd,SQLHSTMT hstmt)
{
ShowDBError(hwnd,SQL_HANDLE_STMT,hstmt);
}
//查检是否有错误
BOOL CHECKDBSTMTERROR(HWND hwnd,SQLRETURN result,SQLHSTMT hstmt)
{
if(SQL_ERROR==result)
{
ShowDBStmtError(hwnd,hstmt);
return TRUE;
} 
else 
{
return FALSE;
}
}
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
        HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
        HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
    }
    return FALSE;
}
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
    return TRUE;
}
//选择文件
void openfile(HWND hwnd)
{
OPENFILENAME ofn;//定义一个OPENFILENAME类型的结构体。
ZeroMemory(&ofn,sizeof(ofn));//使用结构体变量前把该结构体变量各个位清零。
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFile = szFile; 
ofn.lpstrFile[0] = TEXT('');
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = TEXT("ALL*.*文本文档*.TXT");
ofn.nFilterIndex = 2;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
if (GetOpenFileName(&ofn))
{
SetDlgItemText(hwnd,IDC_FILEINFO,szFile);
}
}
BOOL inport_begin(HWND hwnd)
{
//分配环境句柄
result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
//设置管理环境属性
result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
//分配连接句柄
result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
//设置连接属性
result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (void*)LOGIN_TIMEOUT, 0);
//连接数据库
result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT *)0,SQL_DRIVER_NOPROMPT);
if(SQL_ERROR==result)
{
ShowDBConnError(hwnd,hdbc);
return FALSE;
}
ImportStatus = TRUE;
return TRUE;
}
DWORD WINAPI ThreadFunc(LPVOID lpParam)                //多线程任务
{
HWND hwnd = (HWND)lpParam;
char str[50];
char fname[11];
char fage[11];
int  age;
int i,j,k;
int IntoNum = 0;
//TCHAR temp[256];
TCHAR info[256];
FILE * Input;
for (i=0;szFile[i]!='';++i)                        //处理绝对路径
{
if (szFile[i]=='\')
{
szFile[i]='/';
}
}
if(strlen(szFile)==0){SetDlgItemText(hwnd,IDC_STATUS,"请选择文件!"); return 0;}
Input = fopen(szFile,"r");                                //打开文本文档
BOOL hasError=FALSE;
/*创建新的数据库句柄,执行SQL语句*/
result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
result = SQLPrepare(hstmt,(SQLCHAR *)"insert into T_Person(FName,FAge) values(?,?)",SQL_NTS);//两个占位符
SQLINTEGER iSQL_NTS=SQL_NTS;
while(!feof(Input)&&ImportStatus)                //判断文件流是否到末尾,并判断导入标志的状态
{
ZeroMemory(fname,sizeof(fname)/sizeof(char));
ZeroMemory(fage,sizeof(fage)/sizeof(char));
ZeroMemory(str,sizeof(str)/sizeof(char));
//ZeroMemory(temp,sizeof(temp)/sizeof(TCHAR));
ZeroMemory(info,sizeof(info)/sizeof(TCHAR));
fgets(str,50,Input);
for (i=0,j=0,k=0;str[k]!='';++k)                                        //将文件流中的姓名和年龄数据进行处理,存储到相应的变量中
{
if (str[k]>='A'&&str[k]<='Z' || str[k]>='a'&&str[k]<='z')
{
fname[i] = str[k];
++i;
} 
else
{
if (str[k]>='0'&&str[k]<='9')
{
fage[j] = str[k];
++j;
}
}
}
fname[i] = '';
fage[j] = '';
age = atoi(fage);
if(CHECKDBSTMTERROR(hwnd,result,hstmt)==TRUE) {hasError=TRUE;break;}
//给两个占位符赋值
SQLBindParameter(hstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,strlen(fname),0,fname,0,&iSQL_NTS);
SQLBindParameter(hstmt,2,SQL_PARAM_INPUT,SQL_C_LONG,SQL_INTEGER,sizeof(int),0,&age,0,&iSQL_NTS);
result =SQLExecute(hstmt);
if(CHECKDBSTMTERROR(hwnd,result,hstmt)==TRUE) {hasError=TRUE;break;}
Sleep(30);
wsprintf(info,TEXT("正在导入第%d条数据"),++IntoNum);
SetDlgItemText(hwnd,IDC_STATUS,info);
}
fclose(Input);
SQLFreeStmt(hstmt,SQL_CLOSE);
SQLDisconnect(hdbc);                                        //如果到达末尾,跳出,并关闭数据库
SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
SQLFreeHandle(SQL_HANDLE_ENV,henv);
if(hasError==TRUE)
{
SetDlgItemText(hwnd,IDC_STATUS,TEXT("数据库操作出错,取消导入!"));
}
else if (ImportStatus)
{
SetDlgItemText(hwnd,IDC_STATUS,TEXT("恭喜您,所有的数据都已经导入成功!"));
}
else
{
SetDlgItemText(hwnd,IDC_STATUS,TEXT("您已经取消了数据库的导入!"));
}
return 0;
}
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch(id)
    {
        case IDC_OK:
                {
                        if(inport_begin(hwnd))
{
                        CreateThread(NULL,0,ThreadFunc,hwnd,0,0);  //开始使用多线程调用函数
}
else
{
SetDlgItemText(hwnd,IDC_STATUS,TEXT("数据库连接出错,取消导入!"));
}
                        break;
                }
case IDC_CANCEL:
{
ImportStatus = FALSE;
break;
            }
case IDC_FILEOPEN:
openfile(hwnd);
break;
        default:
break;
    }
}
void Main_OnClose(HWND hwnd)
{
    EndDialog(hwnd, 0);
}


<< < 31 32 33 34 35 36 37 38 39 40 > >>

Powered By Z-BlogPHP 1.7.3

Copyright 2024-2027 pukuimin Rights Reserved.
粤ICP备17100155号