汉扬编程 C语言入门 C语言小白实战操纵数据库管理系统核心技术

C语言小白实战操纵数据库管理系统核心技术

一、【综合配置】

C语言小白实战操纵数据库管理系统核心技术

C/C++学习资料私信我即可获取

C语言小白实战操纵数据库管理系统核心技术

二、【SQL源代码操作及相关头文件】

C语言小白实战操纵数据库管理系统核心技术

C/C++学习资料私信我即可获取

C语言小白实战操纵数据库管理系统核心技术

三、【SQL Server 2012效果】

C/C++学习资料私信我即可获取

四、【源程序代码】

// StudentOPSQLserverDB.cpp : 定义控制台应用程序的入口点。

//

// 【C语言前端项目后台SQL Server数据库】

#include \”stdafx.h\”

#include<stdio.h>

#include<windows.h>

#include<string.h>

// ODBC头文件有5个:sql.h, sqlext.h, sqltypes.h, sqlucode.h and odbcinst.h

#include<sql.h> // sql.h包含了大多数我们经常会用到的函数, sql.h include 了sqltypes.h

#include<sqlext.h> // 包含了ODBC3的新特性, sqlext.h include了sqlucode.h,SQLConnect函数头文件

#include<sqltypes.h>

#define MAXSTRSIZE 1024

SQLINTEGER num1, age1;

SQLCHAR name1[20], sex1[10], shenfennum1[20], xueli1[10], mianmao1[10], mima1[20], quanxian1[10], born1[20];

SQLINTEGER len_num1, len_name1, len_sex1, len_shenfennum1, len_xueli1, len_age1, len_mianmao1, len_born1, len_mima1, len_quanxian1;

struct worker // 数据库表中对应的字段结构体类型

{

int num; // 工号

char name[20]; // 姓名

char sex[10]; // 性别

int age; // 年龄

char shenfennum[20]; // 身份证号码

char xueli[20]; // 学历

char mianmao[10]; // 政治面貌

char mima[20]; // 密码

char quanxian[10]; // 权限设置

char born[20]; // 出生年月日

}gong[1000];

void trimSpace(char *str); // 去除多余的空格

/*———————————————————————————————————–*/

void LoadDbDataInfo() // 将后台数据库SQL Server数据导出至控制台进行输出

{

SQLRETURN ret;

SQLHENV henv; // SQLHANDLE henv

SQLHDBC hdbc; // SQLHANDLE hdbc

SQLHSTMT hstmt; // SQLHANDLE hstmt

ret = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv); // 申请环境句柄

ret = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER); // 设置环境属性

ret = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); // 申请数据库连接句柄

ret = SQLConnect(hdbc, (SQLCHAR*)\”StudentDB\”, SQL_NTS, (SQLCHAR*)\”sa\”, SQL_NTS, (SQLCHAR*)\”123456\”, SQL_NTS); // 连接数据库

if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO){

{

printf(\”□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□\\n\”);

printf(\”□ 微软数据库SQL Sever已经成功连接…… □\\n\”);

printf(\”□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□\\n\”);

}

ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); // 申请SQL语句句柄

SQLCHAR sql[] = \”SELECT *FROM worker\”;

ret = SQLExecDirect(hstmt, sql, SQL_NTS); // 直接执行SQL语句

if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO){

int i = 0;

printf(\”\\n——————————————————————————–\\n\”);

while (SQLFetch(hstmt) != SQL_NO_DATA){ // 遍历结果集

/*****************************************数据库整型赋值*******************************/

/*

函数定义: SQLRETURN SQLGetData(

SQLHSTMT StatementHandle,

SQLUSMALLINT Col_or_Param_Num,

SQLSMALLINT TargetType,

SQLPOINTER TargetValuePtr,

SQLLEN BufferLength,

SQLLEN * StrLen_or_IndPtr);

*/

SQLGetData(hstmt, 1, SQL_C_ULONG, &num1, 0, &len_num1);

SQLGetData(hstmt, 2, SQL_C_CHAR, name1, 20, &len_name1);

SQLGetData(hstmt, 3, SQL_C_CHAR, sex1, 10, &len_sex1);

SQLGetData(hstmt, 4, SQL_C_ULONG, &age1, 0, &len_age1);

SQLGetData(hstmt, 5, SQL_C_CHAR, shenfennum1, 20, &len_shenfennum1);

SQLGetData(hstmt, 6, SQL_C_CHAR, xueli1, 10, &len_xueli1);

SQLGetData(hstmt, 7, SQL_C_CHAR, mianmao1, 10, &len_mianmao1);

SQLGetData(hstmt, 8, SQL_C_CHAR, mima1, 20, &len_mima1);

SQLGetData(hstmt, 9, SQL_C_CHAR, quanxian1, 10, &len_quanxian1);

SQLGetData(hstmt, 10, SQL_C_CHAR, born1, 10, &len_born1);

gong[i].num = num1;

gong[i].age = age1;

strcpy((char *)gong[i].name, (char *)name1);

strcpy((char *)gong[i].sex, (char *)sex1);

strcpy((char *)gong[i].shenfennum, (char *)shenfennum1);

strcpy((char *)gong[i].xueli, (char *)xueli1);

strcpy((char *)gong[i].mianmao, (char *)mianmao1);

strcpy((char *)gong[i].mima, (char *)mima1);

strcpy((char *)gong[i].quanxian, (char *)quanxian1);

strcpy((char *)gong[i].born, (char *)born1);

trimSpace(gong[i].name);//删除数据库赋值给字符串中的空格字符

trimSpace(gong[i].sex);

trimSpace(gong[i].shenfennum);

trimSpace(gong[i].xueli);

trimSpace(gong[i].mianmao);

trimSpace(gong[i].mima);

trimSpace(gong[i].quanxian);

trimSpace(gong[i].born);

printf(\” 工号: %d 姓名: %s 性别: %s 身份证号码: %s \\n 学历: %s\”, gong[i].num, gong[i].name, gong[i].sex, gong[i].shenfennum, gong[i].xueli);

printf(\”政治面貌: %s 密码%s , 权限:%s 出生年月%s\”, gong[i].mianmao, gong[i].mima, gong[i].quanxian, gong[i].born);

printf(\”年纪:%d岁 \\n\\n\”, gong[i].age);

i++;

}

printf(\”用户前台数据统计中心已成功测试导入第%d条记录\\n\”, i);

printf(\”\\n——————————————————————————–\\n\”);

SQLSMALLINT number_column;

ret = SQLNumResultCols(hstmt, &number_column); // 查询结果集列数

if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)

printf(\”后台数据库中数据表数据结构共有%d个字段\\n\”, number_column);

else printf(\”查询结果集列数失败!\\n\”);

SQLINTEGER number_row;

ret = SQLRowCount(hstmt, &number_row); // 查询被影响的行数

if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)

printf(\”后台数据库中数据表共有%d条记录\\n\”, number_row);

else

{

printf(\”□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□\\n\”);

printf(\”□ 对不起,你查询结果记录个数失败 □\\n\”);

printf(\”□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□\\n\”);

}

SQLFreeHandle(SQL_HANDLE_STMT, hstmt); // 释放语句句柄

}

else

{

printf(\”□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□\\n\”);

printf(\”□ 对不起,你查询数据库失败 □\\n\”);

printf(\”□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□\\n\”);

}

SQLDisconnect(hdbc); // 断开与数据库的连接

}

else

{

printf(\”□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□\\n\”);

printf(\”□ 对不起,您连接SQL Sever数据库已失败…… □\\n\”);

printf(\”□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□\\n\”);

}

printf(\”\\n——————————————————————————–\\n\”);

SQLFreeHandle(SQL_HANDLE_DBC, hdbc); // 释放连接句柄

SQLFreeHandle(SQL_HANDLE_ENV, henv); // 释放环境句柄

}

/*———————————————————————————————————–*/

/*———————————————————————————————————–*/

void trimSpace(char *str)

{

int i, j, k;

char tmpstr[MAXSTRSIZE]; // 此处用户可动态分配,满足情变

i = strlen(str);

for (k = j = 0; j<i; j++)

{

if (str[j] != \’ \’)

{

tmpstr[k] = str[j]; k++;

}

}

tmpstr[k] = \’\\0\’;

strcpy(str, tmpstr);

}

/*———————————————————————————————————–*/

int _tmain(int argc, _TCHAR* argv[])

{

LoadDbDataInfo();

return 0;

}

五、【程序执行效果】

C/C++学习资料私信我即可获取

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/cjia/6110.html

C语言求解一元二次方程(简单版)

北京的C语言,java培训班

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部