56,679
社区成员
发帖
与我相关
我的任务
分享
int CmysqlDatabase::UpdateBlob(Data_Param *para, FILE *f)
{
char query[1024*800],buf[1024*100],*p=NULL,cwhere[256];
unsigned long blob_len;
mysql_query(&mysql,"set names 'utf8'"); //这一行很重要,否则可能会上传失败
sprintf(query,"update %s set %s = \'",para->tab_name, para->set_exp);
p = query + strlen (query);
unsigned int bufsize = sizeof(buf);
while((blob_len = fread (buf, 1, bufsize, f)) > 0)
{
if(p + (2*blob_len) + 3 > query + sizeof (query))
{
TRACE("image too big\n");
return false;
}
p += mysql_real_escape_string(&mysql, p, buf, blob_len);
}
*p++ = '\'';
sprintf(cwhere," where %s",para->where_def);
int wherelen = strlen(cwhere);
memcpy(p,cwhere,wherelen);
p += wherelen;
unsigned long lsize = (unsigned long)(p-query);
if(mysql_real_query(&mysql, query, lsize))
{
TRACE(((char*)mysql_error(&mysql)));
return false;
}
TRACE(((char*)mysql_error(&mysql)));
return true;
}
//下面是调用
FILE *f;
if((f = fopen(m_issue_picpath, "rb")) == NULL)
{
TRACE("file open eror!\n");
m_issue_picpath = "照片文件打开失败!";
UpdateData(FALSE);
return;
}
theApp.mData.tab_name = "repair_process";
strwhere.Format("RPId = \'%d\'",iInsertId);
theApp.mData.where_def = (LPSTR)(LPCTSTR)strwhere;
strExp.Format("RPIssuePic");
theApp.mData.set_exp = (LPSTR)(LPCTSTR)strExp;
if(theApp.mwipd.UpdateBlob(&theApp.mData,f))
{
TRACE("更新照片成功!\n");
}
else
m_issue_picpath = "更新照片失败!";
fclose(f);
void CBlobDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CFileDialogEx dlg(TRUE,_T(""),_T(""),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("照片文件(*.jpg)|*.jpg|"));
if(IDOK==dlg.DoModal()){
m_detail_picpath=dlg.GetPathName();
UpdateData(FALSE);
}
}
void CBlobDlg::OnButton2()
{
UpdateData(TRUE);
// TODO: Add your control notification handler code here
char *opt_host_name = "vmxpcn";
char *opt_user_name = "root";
char *opt_password = "admin888";
unsigned int opt_port_num = 3306;
char *opt_socket_name = NULL;
char *opt_db_name = "wipdebug";
unsigned int opt_flags = 0;
MYSQL *conn;
FILE *f;
conn = mysql_init (NULL);
mysql_real_connect (conn, opt_host_name, opt_user_name, opt_password,
opt_db_name, opt_port_num, opt_socket_name, opt_flags);
if ((f = fopen (m_detail_picpath, "rb")) == NULL)
{
printf("file open eror!");
return;
}
load_image (conn, f);
fclose(f);
mysql_close (conn);
}
void CBlobDlg::load_image(MYSQL *conn, FILE *f)
{
char query[1024*200], buf[1024*100], *p;
unsigned long from_len;
sprintf(query,"insert into repair_process (RPIssuePic) values ( \'" );
p = query + strlen (query);
while ((from_len = fread (buf, 1, sizeof (buf), f)) > 0)
{
if (p + (2*from_len) + 3 > query + sizeof (query))
{
printf("image too big");
return;
}
p += mysql_real_escape_string (conn, p, buf, from_len);
}
*p++ = '\'';
*p++ = ')';
strcpy(p," where RPId=1");
// mysql_query(conn,"set character set gbk");
// TRACE(((char*)mysql_error(conn)));
mysql_real_query (conn, query, (unsigned long) (p- query));
TRACE(((char*)mysql_error(conn)));
}