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

 我来答
小星星教育知识分享
高粉答主

2019-11-23 · 用教师的智慧点燃学生的智慧火花
小星星教育知识分享
采纳数:202 获赞数:67136

向TA提问 私信TA
展开全部

#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\n",mysql_error(conn));

}else{

printf("Connected...\n");

}

t=mysql_query(conn,query);

if(t)

{

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

}else{

printf("Querymade...\n");

res=mysql_use_result(conn);

if(res)

{

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

{

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

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

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

printf("\n");

}

}

mysql_free_result(res);

}

mysql_close(conn);

return0;

}

扩展资料

C语言使用注意事项:

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

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

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

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

(1)、递归遍历树结构

(2)、递归搜索

qicaiwuya3
2014-10-19 · TA获得超过181个赞
知道答主
回答量:48
采纳率:100%
帮助的人:52.8万
展开全部

使用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后得到结果集后,如何使用的问题了。

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

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

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
糖糖寳寳
推荐于2017-09-22 · TA获得超过6.4万个赞
知道大有可为答主
回答量:1.8万
采纳率:92%
帮助的人:3938万
展开全部
  举个例子,连接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();
  }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mafangsan
2014-10-19 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1万
采纳率:71%
帮助的人:2578万
展开全部
可以去看一下 ado 或者 odbc
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式