用C语言怎么实现与数据库的连接

作者&投稿:衡刮 (若有异议请与网页底部的电邮联系)
用C语言怎么实现与数据库的连接~

举个例子,连接SQL:
  // 打开数据库
  strDBClass.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database Password=%s"), m_strUnEntryptMdbFilePath,m_strMDBPassword);
  // 创建连接
  HRESULT hr = m_pConnection.CreateInstance(_uuidof(Connection));
  _ConnectionPtr m_pConnection->Open(m_strDBClass,_T(""),_T(""),adConnectUnspecified);
  // 声明表单指针
  _RecordsetPtrpBandRecordset;

C函数库没有相应的数据库连接接口函数。
只能够尝试用二进制或文本模式读写文件,来模拟相应的数据库操作等。
可以尝试下C++库类,里面有数据库连接的接口

#include<mysql/mysql.h>

#include<stdio.h>

intmain()

{

MYSQL*conn;

MYSQL_RES*res;

MYSQL_ROWrow;

char*server="localhost";//本地连接

char*user="root";//

char*password="525215980";//mysql密码

char*database="student";//数据库名

char*query="select*fromclass";//需要查询的语句

intt,r;

conn=mysql_init(NULL);

if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0))

{

printf("Errorconnectingtodatabase:%s
",mysql_error(conn));

}else{

printf("Connected...
");

}

t=mysql_query(conn,query);

if(t)

{

printf("Errormakingquery:%s
",mysql_error(conn));

}else{

printf("Querymade...
");

res=mysql_use_result(conn);

if(res)

{

while((row=mysql_fetch_row(res))!=NULL)

{

//printf("num=%d
",mysql_num_fields(res));//列数

for(t=0;t<mysql_num_fields(res);t++)

printf("%8s",row[t]);

printf("
");

}

}

mysql_free_result(res);

}

mysql_close(conn);

return0;

}

扩展资料

C语言使用注意事项:

1、指针是c语言的灵魂,一定要灵活的使用它:

(1)、指针的声明,创建,赋值,销毁等

(2)、指针的类型转换,传参,回调等

2、递归调用也会经常用到:

(1)、递归遍历树结构

(2)、递归搜索



使用ODBC进行数据库编程。

1、配置ODBC数据源

2、使用SQL函数进行连接。

对于1、配置数据源如果楼主不会的话,可以百度,很简单。配置完以后就可以编程操作数据库啦。

对于2、使用SQL函数进行连接,这里给个代码片段,楼主 照着做就行啦。

#include<windows.h>   
#include<sql.h>  
#include<sqlext.h>  
void   main()   

    HENV   henv;  //环境句柄 
    HDBC   hdbc;  //数据源句柄 
    HSTMT   hstmt;  //执行语句句柄 
    unsigned   char   datasource[]="数据源名称";  //即ODBC源中设置的源名称 
    unsigned   char   user[]= "用户名";  //数据库的帐户名 
    unsigned   char   pwd[]= "密码";  //数据库的密码 
    unsigned   char   search[]="select   xm   from   stu   where   xh=0";  
    SQLRETURN   retcode; //记录各SQL函数的返回情况 
    // 分配环境句柄 
    retcode= SQLAllocEnv(&henv);  // 等介于 SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); 
    // 设置ODBC环境版本号为3.0 
    retcode= SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); 
    // 分配连接句柄 
    retcode= SQLAllocConnect(henv,&hdbc); // 等介于 SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); 
    //设置连接属性,登录超时为*rgbValue秒(可以没有)
     // SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)(rgbValue), 0);
 
    //直接连接数据源 
    // 如果是windows身份验证,第二、三参数可以是NULL,也可以是任何字串 
    //SQL_NTS 即 "Null-Terminated   String"  
    retcode= SQLConnect(hdbc,datasource, SQL_NTS, user, SQL_NTS , pwd, SQL_NTS );  
    //分配语句句柄 
    retcode= SQLAllocStmt(hdbc,&hstmt);  // 等介于 SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); 
    //直接执行查询语句
    retcode=SQLExecDirect(hstmt,search,SQL_NTS);  
    //将数据缓冲区绑定数据库中的相应字段(i是查询结果集列号,queryData是绑定缓冲区,BUFF_LENGTH是缓冲区长度) 
    SQLBindCol(hstmt, i, SQL_C_CHAR, queryData[i-1], BUFF_LENGTH, 0); 
    //遍历结果集到相应缓冲区 queryData
    SQLFetch(hstmt);   
    /* 
     *对遍历结果的相关操作,如显示等
     */ 
    //注意释放顺序,否则会造成未知错误! 
    SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
    SQLDisconnect(hdbc);
    SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
    SQLFreeHandle(SQL_HANDLE_ENV, henv);
  }


代码看上去很复杂,其实都可以直接复制。其中需要改的是数据源名称、数据库用户名、数据库密码和SQL语句。

然后就是SQLFetch后得到结果集后,如何使用的问题了。

在下面的注释部分 填写你的处理代码即可。

    /*
     *对遍历结果的相关操作,如显示等
     */



  举个例子,连接SQL:
  // 打开数据库
  strDBClass.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database Password=%s"), m_strUnEntryptMdbFilePath,m_strMDBPassword);
  // 创建连接
  HRESULT hr = m_pConnection.CreateInstance(_uuidof(Connection));
  _ConnectionPtr m_pConnection->Open(m_strDBClass,_T(""),_T(""),adConnectUnspecified);
  // 声明表单指针
  _RecordsetPtr pBandRecordset;
  pBandRecordset.CreateInstance(__uuidof(Recordset));
  // 执行语句
  CString strSQL(L"SELECT * FROM [Band]");
  m_pConnection->Execute((LPCTSTR)strSQL,NULL,0);
  // 提取某一项 例如BandInfo
  int iBandInfo = wcscmp(colum, L"BandInfo");
  while(!recordsetPtr->adoEOF)
  {
  var = recordsetPtr->GetCollect(colum);
  if(var.vt != VT_NULL)
  strName = (LPCSTR)_bstr_t(var);
  recordsetPtr->MoveNext();
  }

可以去看一下 ado 或者 odbc


c语言如何计算两个数的和
include <stdio.h> int main(){ int a,b,sum;\/\/一、定义变量,int代表数据类型——整数,sum求和;printf("请输入两个整数:");scanf("%d %d",&a,&b);\/\/二、输入数据,%d对输入类型的限制代表——整数,并把这俩个数分别给&a和&b两个变量,&取地址运算符;sum=a+b;\/\/三、数据处理,把...

C语言按位与怎么运算?
计算两个数x,y相与的结果。代码写作x&y 先将x与y分别写成二进制bit形式~~例如计算10&30 10二进制为1010 30为11110 然后从低位开始,每个bit分别作与运算~~其中bit的与运算,除了1&1=1外,其余组合结果均为0 故10&30=01010,即1010。。。

用C语言编程实现:输入10个数字,最小数与第一个数交换,最大数与最后一...
则重置最大值,及其索引 { max = src[i]; maxlen = i; } else if (min > src[i])\/\/ 元素如果比最小数的,则重置最小值,及其索引 { min = src[i]; minlen = i; } } if (0 != minlen) \/\/ 如果不同才交换 { int tem = src[0];...

如何用C语言实现两个数的加法与相减运算
答: 使用for循环对数进行逐一判断,如果数为偶数则相加,如果为奇数则相减,对应的程序片段如下所示。运行结果如下所示。最后得到的结果应该是52。

c语言中同或、异或怎么表示
以“与”运算为例说明如下:我们知道在C语言中long型占4个字节,int型占2个字节,如果一个long型数据与一个int型数据进行“与”运算,右端对齐后,左边不足的位依下面三种情况补足,(1)如果整型数据为正数,左边补16个0。(2)如果整型数据为负数,左边补16个1。(3)如果整形数据为无符号数,...

c语言编写程序 输入两个整数,计算两数之和
4. 输出结果: 使用`printf()`函数输出结果,`printf("这两个数的和是:%d\\n", sum);`,`%d`表示输出一个整数,`\\n`用于换行。5. 结束程序: 使用`printf()`函数显示一条消息,如"计算完成,谢谢使用!",最后用`return 0;`结束`main()`函数。在编写C语言程序时,遵循一些基本规则可以提高...

c语言中,找到三个数中最大值,怎么实现?
按照如下流程:1 输入三个数。2 把最大最小两个变量赋值为第一个数。3 用最大最小值与剩余两个数比较,如果更大或更小,则取代称为最大\/最小值。4 输出。代码如下:include <stdio.h>int main(){ int a,b,c,max,min; scanf("%d%d%d",&a,&b,&c);\/\/输入三个数。 max=...

用c语言编写一个程序要求输入一个数,输出该数分别与1—10的数相承的结...
include"stdio.h"void main(){ int a;printf("请输入一个整数:");scanf("%d",&a);for (int i=1;i<=10;i++){ printf("%d",a);printf("*");printf("%d",i);printf("=");printf("%d\\t",a*i);if (i%2==0)printf("\\n");} } ...

c语言计算整数各位数字之和
C语言的运算规则及用途:1、运算规则:按位与如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。按位或两个相应的二进制位中只要有一个为1,该位的结果值为1。按位异或若参加运算的两个二进制位值相同则为0,否则为1。取反,是一元运算符,用来对一个二进制数按位取反,即将0变1...

c语言如何实现两数之间的所有奇数和?
一、算法分析:要计算a b之间所有奇数和,那么最朴素的算法可以设计如下:1、输入a,b值;2、循环遍历a b之间的所有数值,如果为奇数,则累加;3、输出结果。二、算法优化:1、由于连续奇数之间差值为2,所以可以判断出第一个奇数,然后依次加2得到所有奇数,将所有奇数累加即可。2、连续奇数属于等差...

宜丰县18910898203: C语言怎么接连数据库
祖新泻痢: private static string connStr = "Data Source=.\\SQL2005;Initial Catalog=ConManage;User ID=sa;Pwd=123456";

宜丰县18910898203: 纯C语言怎样连接数据库 -
祖新泻痢: 你先配置数据库 http://wenwen.sogou.com/z/q763982510.htm 然后举个例子,连接SQL 我连access的给你看一下 别忘了 mfc AfxOleInit(); 或者 win32 coInitial什么东东(初始化com的) // 打开数据库 strDBClass.Format(_T("Provider=...

宜丰县18910898203: C语言怎样连接mysql数据库 -
祖新泻痢: mysql是有c语言接口的,安装相应库后就可以链接了,一般连接mysql的函数是mysql_connect或者mysql_real_connect(大概就是这么拼的吧...)可以使用mysql_query执行sql语句

宜丰县18910898203: C语言如何实现sql数据的连接和操作??? -
祖新泻痢: Mysql有与C连接的接口函数,如:mysql_init(),mysql_real_connect()等,通过SQL语句操作即可.

宜丰县18910898203: C程序怎么和数据库连接的?是程序代码连接数据库,还是数据库连程序,或者都不是?说下格式过程
祖新泻痢: 用ODBC API 用程序代码 先在系统里添加数据源 然后用C语言的ODBC 接口操作数据库

宜丰县18910898203: C程序 如何连接数据库?
祖新泻痢: 看什么DB, 如果MYSQL 就下载官方的库并找到其接口调用即可了.

宜丰县18910898203: c程序通过什么连接oracle -
祖新泻痢: 一般C语言连接oracle数据库通过使用oracle提供的OCI接口和PROC编程接口两种方式.OCI方式纯粹是一些函数接口.PROC是oracle提供的一种C与ORACLE SQL的混合编程.程序(以.pc为后缀)编好之后,使用oracle提供的proc预编译程序,将pc文件编译成c文件(这一过程,相当于将SQL转换为OCI的接口),然后再使用c语言编译器生成可以执行文件.OCI方式不容易入门,它拥有大量的接口函数,要很快熟悉它,非常难.但OCI方式的编程效率很高.porc方式简单易用.可用于对性能要求不太高的项目.

宜丰县18910898203: C语言如何与ACCESS或MYSQL数据库连接?
祖新泻痢: C连接MySQL数据库需要nbsp;MySQL的头文件和库可以参考http://blog.chinaunix.net/u/8780/showart_277910.html

宜丰县18910898203: C语言连接Access数据库如何实现???标准的c语言 -
祖新泻痢: 1、C/C++与数据库交互,像 mssql/ mysql / oracle 等,一般都有成熟的第三方库,这些库里面无非就是封装了与数据库通讯的方式和通讯协议搜一下要用的数据库相关的 API 文档,会说得很清楚任何文件都是二进制数据,关键是数据存储的组织...

宜丰县18910898203: c语言连接SQL Server数据库并操作表中数据的代码没有错误,但是无法执行 -
祖新泻痢: 1、配置ODBC数据源. 2、使用SQL函数进行连接. 对于1、配置数据源,配置完以后就可以编程操作数据库了. 对于2、使用SQL函数进行连接,参考代码如下:#include<windows.h> #include<sql.h> #include<sqlext.h> void main() { HENV ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网