C连接MySQL执行插入操作(2)
来源:互联网 发布:eview触摸屏软件下载 编辑:程序博客网 时间:2024/05/21 06:58
#include <stdlib.h>
#include <stdio.h>
#include <winsock.h>
#include <iostream.h>
#include "include/mysql.h"
#include "my_insert.c"
#pragma comment(lib,"libmysql.lib")
#define host_name "localhost" //数据库服务器
#define db_name "html_db" //数据库名
#define user_name "root" //用户名
#define password "123456" //密码
char szSqlText[500] ;
int count;
int index;
int i=0;
MYSQL *conn;
MYSQL_RES *rs;
MYSQL_ROW row; //注意它的声明 typedef char **MYSQL_ROW,字符串数组
//记录结构体
typedef struct {
char para[30];
char length[256];
/*
int ID;
char Name[30];
char Sex[20];
int Age;
*/
}RECORD;
int my_insert(RECORD recd);//声明数据库插入函数
int main( int argc, char * argv[]) {
BOOL bCreate = FALSE;
RECORD record;//创建结构体类型实体
conn = mysql_init(NULL);
if (conn == NULL) {
fprintf(stderr, "mysql_init() failed (probably out of memory)\n");
exit(1);
}
if(mysql_real_connect(conn,host_name,user_name,password,db_name,MYSQL_PORT,NULL,0) == NULL){
//在MYSQL初始化之后的操作如果有错误,可以用mysql_errno(MYSQL*)和
//mysql_errer(MYSQL*) 分别获得出错代号和描述
fprintf(stderr, "mysql_real_connect() failed:\nError %u (%s)\n" ,mysql_errno(conn),mysql_error(conn));
exit(1);
} else{
printf( "connect to db successful.\n" );//连接成功
}
if(bCreate) {
//第一次运行创建一个表mytable
sprintf(szSqlText, "create table mytable(time datetime,s1 char(6),s2 char(11),s3 int,s4 int)" );
if(mysql_query(conn,szSqlText)) {
printf("Can't create table.\n");//建表失败
mysql_close(conn);
return 0;
}
}
//执行我的操作
index=0;
for(i=0;i<30;i++){
sscanf(record.length+index,"%[^,]",record.para[i]);//ID
index+=strlen(record.para[i])+1;
}
/*
printf("请输入ID:");
sscanf(record.length+index,"%[^,]",record.ID);//ID
index++;
printf("请输入Name:");
scanf("%[^,]",record.Name);//ID
index++;
scanf("%[^,]",record.Sex);//ID
index++;
scanf("%[^,]",record.Age);//ID
*/
my_insert(record);
return 0;
}
//最后,注意查询语句中字符串的转义 select a from t where a=''1',是要出错的
//空字符转换为'\0',这里的0 是可打印的ASCII 码0,而不是空。
//反斜线、单引号和双引号分别转换为‘\\’、‘\'’ 和‘\"’
//你也可以用mysql_escape_string(to_str,from_str,from_len)转换sql语句
int my_insert(RECORD recd){
//生成写表语句
sprintf(szSqlText,"insert into person_tb values('%s','%s','%s','%s')",recd.para[0],recd.para[1],recd.para[2],recd.para[3]);
//sprintf(szSqlText,"insert into person_tb values('%s','%s','%s','%s')",recd.ID,recd.Name,recd.Sex,recd.Age);
//sprintf(szSqlText,"insert into person_tb values('4','xiaoli','male','24')");
//int sprintf( char *buffer, const char *format_text)把格式化的数据写入字符串缓冲区buffer
if(mysql_query(conn,szSqlText)) {
printf("Insert values error:\nError %u (%s)\n",mysql_errno(conn),mysql_error(conn));//插入数据失败
mysql_close(conn);
return 0;
} else {
//insert/delete/update 语句可用mysql-affected_rows()得到受作用的行
printf("INSERT statement succeeded: %lu rows affected\n",(unsigned long)mysql_affected_rows(conn));//插入数据成功
}
//查询数据
sprintf(szSqlText,"select * from person_tb");
//执行成功则返回零
if(mysql_query(conn,szSqlText) != 0) {
mysql_close(conn);
return 0;
} else {
//立即从服务器返回所有行,存储到本地,产生结果集,失败则返回NULL
rs = mysql_store_result(conn);
//结果集是保留在服务器上,fetch_row时才逐行从服务器上取
//rs = mysql_use_result(conn);
//Get query result.
count = (int)mysql_num_rows(rs);
printf("Query: %s.\n%ld records found.\n",szSqlText,count);
//MYSQL_ROW是一个指向数值数组的指针,row[0],row[1]...row[列数-1]
//所有的数据类型都以字符串返回,即使是数字型,要进行串转换
//NULL指针代表数据库字段的NULL,应经常检查列是否为NULL
while ((row = mysql_fetch_row(rs)) != NULL){
unsigned int i;
//返回NULL,则说明不再有行
for (i=0;i<mysql_num_fields(rs);i++) {
if(i>0)
fputc('\t',stdout);
printf( "%s" ,row[i]!=NULL ? row[i]: "NULL" );
}
fputc('\n',stdout);
}
//使用完后,释放结果集占用内存
mysql_free_result(rs);
}
mysql_close(conn);
return 0;
#include <stdio.h>
#include <winsock.h>
#include <iostream.h>
#include "include/mysql.h"
#include "my_insert.c"
#pragma comment(lib,"libmysql.lib")
#define host_name "localhost" //数据库服务器
#define db_name "html_db" //数据库名
#define user_name "root" //用户名
#define password "123456" //密码
char szSqlText[500] ;
int count;
int index;
int i=0;
MYSQL *conn;
MYSQL_RES *rs;
MYSQL_ROW row; //注意它的声明 typedef char **MYSQL_ROW,字符串数组
//记录结构体
typedef struct {
char para[30];
char length[256];
/*
int ID;
char Name[30];
char Sex[20];
int Age;
*/
}RECORD;
int my_insert(RECORD recd);//声明数据库插入函数
int main( int argc, char * argv[]) {
BOOL bCreate = FALSE;
RECORD record;//创建结构体类型实体
conn = mysql_init(NULL);
if (conn == NULL) {
fprintf(stderr, "mysql_init() failed (probably out of memory)\n");
exit(1);
}
if(mysql_real_connect(conn,host_name,user_name,password,db_name,MYSQL_PORT,NULL,0) == NULL){
//在MYSQL初始化之后的操作如果有错误,可以用mysql_errno(MYSQL*)和
//mysql_errer(MYSQL*) 分别获得出错代号和描述
fprintf(stderr, "mysql_real_connect() failed:\nError %u (%s)\n" ,mysql_errno(conn),mysql_error(conn));
exit(1);
} else{
printf( "connect to db successful.\n" );//连接成功
}
if(bCreate) {
//第一次运行创建一个表mytable
sprintf(szSqlText, "create table mytable(time datetime,s1 char(6),s2 char(11),s3 int,s4 int)" );
if(mysql_query(conn,szSqlText)) {
printf("Can't create table.\n");//建表失败
mysql_close(conn);
return 0;
}
}
//执行我的操作
index=0;
for(i=0;i<30;i++){
sscanf(record.length+index,"%[^,]",record.para[i]);//ID
index+=strlen(record.para[i])+1;
}
/*
printf("请输入ID:");
sscanf(record.length+index,"%[^,]",record.ID);//ID
index++;
printf("请输入Name:");
scanf("%[^,]",record.Name);//ID
index++;
scanf("%[^,]",record.Sex);//ID
index++;
scanf("%[^,]",record.Age);//ID
*/
my_insert(record);
return 0;
}
//最后,注意查询语句中字符串的转义 select a from t where a=''1',是要出错的
//空字符转换为'\0',这里的0 是可打印的ASCII 码0,而不是空。
//反斜线、单引号和双引号分别转换为‘\\’、‘\'’ 和‘\"’
//你也可以用mysql_escape_string(to_str,from_str,from_len)转换sql语句
int my_insert(RECORD recd){
//生成写表语句
sprintf(szSqlText,"insert into person_tb values('%s','%s','%s','%s')",recd.para[0],recd.para[1],recd.para[2],recd.para[3]);
//sprintf(szSqlText,"insert into person_tb values('%s','%s','%s','%s')",recd.ID,recd.Name,recd.Sex,recd.Age);
//sprintf(szSqlText,"insert into person_tb values('4','xiaoli','male','24')");
//int sprintf( char *buffer, const char *format_text)把格式化的数据写入字符串缓冲区buffer
if(mysql_query(conn,szSqlText)) {
printf("Insert values error:\nError %u (%s)\n",mysql_errno(conn),mysql_error(conn));//插入数据失败
mysql_close(conn);
return 0;
} else {
//insert/delete/update 语句可用mysql-affected_rows()得到受作用的行
printf("INSERT statement succeeded: %lu rows affected\n",(unsigned long)mysql_affected_rows(conn));//插入数据成功
}
//查询数据
sprintf(szSqlText,"select * from person_tb");
//执行成功则返回零
if(mysql_query(conn,szSqlText) != 0) {
mysql_close(conn);
return 0;
} else {
//立即从服务器返回所有行,存储到本地,产生结果集,失败则返回NULL
rs = mysql_store_result(conn);
//结果集是保留在服务器上,fetch_row时才逐行从服务器上取
//rs = mysql_use_result(conn);
//Get query result.
count = (int)mysql_num_rows(rs);
printf("Query: %s.\n%ld records found.\n",szSqlText,count);
//MYSQL_ROW是一个指向数值数组的指针,row[0],row[1]...row[列数-1]
//所有的数据类型都以字符串返回,即使是数字型,要进行串转换
//NULL指针代表数据库字段的NULL,应经常检查列是否为NULL
while ((row = mysql_fetch_row(rs)) != NULL){
unsigned int i;
//返回NULL,则说明不再有行
for (i=0;i<mysql_num_fields(rs);i++) {
if(i>0)
fputc('\t',stdout);
printf( "%s" ,row[i]!=NULL ? row[i]: "NULL" );
}
fputc('\n',stdout);
}
//使用完后,释放结果集占用内存
mysql_free_result(rs);
}
mysql_close(conn);
return 0;
}
有警告:
D:\c2\test2.c(71) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'char '
D:\c2\test2.c(71) : warning C4024: 'strlen' : different types for formal and actual parameter 1
- C连接MySQL执行插入操作(2)
- C连接MySQL执行插入操作(1)
- C 语言连接mysql 执行 增、删、改、查、操作
- mysql命令行执行大量数据插入操作
- 用C语言操作MySQL数据库,进行连接、插入、修改、删除等操作
- 用C语言操作MySQL数据库,进行连接、插入、修改、删除等操作
- 用C语言操作MySQL数据库,进行连接、插入、修改、删除等操作
- 用C语言操作MySQL数据库,进行连接、插入、修改、删除等操作
- 用C语言操作MySQL数据库,进行连接、插入、修改、删除等操作
- C# 操作 MySQL 数据库(连接,查询,插入)
- jsp连接MySQL实现插入insert操作
- jsp连接MySQL实现插入insert操作
- java连接mysql插入数据操作
- MySQL执行插入操作时报错1366 - Incorrect string value
- 基础--JAVA对Mysql进行连接、插入、修改、删除操作
- JAVA对MYSQL进行连接、插入、修改、删除操作
- JDBC连接Mysql实现数据的插入、更改操作
- JAVA对Mysql进行连接、插入、修改、删除操作
- ntp 设置笔记
- Sql 中 with 的使用例子
- 色彩处理--Curves与Levels
- Median of Two Sorted Arrays
- Array数组
- C连接MySQL执行插入操作(2)
- poj3368 Frequent values(维护个最大值rmq or 线段树)
- 深入探讨 Java 类加载器
- jw player 源码编译运行笔记
- 2440外部中断
- Android系统移植与调试之------->build.prop文件详细赏析
- 大连假期实习报告
- XML解析库比较
- LoundRunner关联