c调用sql
1. c语言如何调用Mysql数据库文件并进行对数据库的操作呢。
MYSQL m_sqlCon;//声明
mysql_init(&m_sqlCon);//初始化
mysql_real_connect(&m_sqlCon, "127.0.0.1", abc, "root", "hibernate", atoi("3306"),NULL,0)//链接
mysql_query(&m_sqlCon, "SET NAMES GB2312"); //设置查询编码格式
res = mysql_query(&m_sqlCon,"select * from ms_sendlist where flag = 1 order by style desc");//查询
mysql_query(&m_sqlCon, sql);//插入,删除
2. 用c语言怎样连接sql数据库
SQL 有API的,包含头文件和连接使用相应的.lib就可以
~
~
~
3. 怎么用C语言实现下列SQL语句
sql和高级语言没关系的,不同数据库sql可能会有点区别。eg:oracle mysql sql server等等。
高级语言(Java C++ C)调用数据库都是驱动不同而已,sql语句都是相同的。
4. 如何在C语言里面执行SQL语句
C语言程序与数据库打交道的方式分为直连(同步)和非直连(异步)两种,它们的特点如下所示:
1. 直连方式
在该方式中,C语言程序直接与数据库进行消息的交互。
该方式的优点是消息交互是即时的,C语言程序向数据库发送消息之后,很快就能够得到结果;缺点是如果数据库执行缓慢,那么C语言程序需要挂在那里等待结果,影响了程序执行效率。
2. 非直连方式
在该方式中,C语言程序通过一个独立的第三方模块间接与数据库进行消息的交互。
该方式的优点是当C语言程序向第三方模块发送消息之后,可以不用等待数据库返回结果而去执行其它流程;缺点是如果消息序列号没有定义好,那么极有可能会导致第三方模块返回的结果出现混乱。因此,在该方式中,定义好发送消息的顺序(即设定好序列号)很重要。
由于需要与数据库打交道,因此要在C语言程序所使用的配置文件中填写好关联数据库的相关信息,如数据库机器的IP地址、端口号、用户名、密码、模块号和所操作的具体数据库名等。在运行程序之前,一定要确保相关配置项信息的正确性。
5. c语言中嵌入sql
很多人用到MySQL来开发一些项目,有时为了性能,我们会直接用C语言来开发相关的模块,尤其在我们的web应用中,虽然php、JSP等脚本均提供了MySQL的接口,但是显然直接使用C语言具有更好的安全性和性能,Michael以前用PHP开发的多个项目中就使用了C语言编写的这类接口,然后再编译到php里面,供php脚本直接使用,这方面的话题就不多说了,下面主要说一下在Linux下如何用C语言连接MySQL数据库,并且读取里面的数据返回,同时如何进行编译。
这里的大部分代码参考了MySQL发行包里面的.c源文件,大家也可以去里面找找相关的代码,下面这段代码实现了连接到本地MySQL服务器上9tmd_bbs_utf8数据库,从数据表tbb_user中根据输入的userid取得该用户的用户名并打印输出到终端。
#if defined(_WIN32) || defined(_WIN64) //为了支持windows平台上的编译
#i nclude
#endif
#i nclude
#i nclude
#i nclude "mysql.h" //我的机器上该文件在/usr/local/include/mysql下
//定义数据库操作的宏,也可以不定义留着后面直接写进代码
#define SELECT_QUERY "select username from tbb_user where userid = %d"
int main(int argc, char **argv) //char **argv 相当于 char *argv[]
{
MYSQL mysql,*sock; //定义数据库连接的句柄,它被用于几乎所有的MySQL函数
MYSQL_RES *res; //查询结果集,结构类型
MYSQL_FIELD *fd ; //包含字段信息的结构
MYSQL_ROW row ; //存放一行查询结果的字符串数组
char qbuf[160]; //存放查询sql语句字符串
if (argc != 2) { //检查输入参数
fprintf(stderr,"usage : mysql_select \n\n");
exit(1);
}
mysql_init(&mysql);
if (!(sock = mysql_real_connect(&mysql,"localhost","dbuser","dbpwd","9tmd_bbs_utf8",0,NULL,0))) {
fprintf(stderr,"Couldn't connect to engine!\n%s\n\n",mysql_error(&mysql));
perror("");
exit(1);
}
sprintf(qbuf,SELECT_QUERY,atoi(argv[1]));
if(mysql_query(sock,qbuf)) {
fprintf(stderr,"Query failed (%s)\n",mysql_error(sock));
exit(1);
}
if (!(res=mysql_store_result(sock))) {
fprintf(stderr,"Couldn't get result from %s\n", mysql_error(sock));
exit(1);
}
printf("number of fields returned: %d\n",mysql_num_fields(res));
while (row = mysql_fetch_row(res)) {
printf("Ther userid #%d 's username is: %s\n", atoi(argv[1]),(((row[0]==NULL)&&(!strlen(row[0]))) ? "NULL" : row[0])) ;
puts( "query ok !\n" ) ;
}
mysql_free_result(res);
mysql_close(sock);
exit(0);
return 0; //. 为了兼容大部分的编译器加入此行
}
编译的时候,使用下面的命令
gcc -o mysql_select ./mysql_select.c -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient (-lz) (-lm) 后面两个选项可选,根据您的环境情况
运行的时候,执行下面的命令
./mysql_select 1
将返回如下结果:
number of fields returned: 1
Ther userid #1 's username is: Michael
query ok !
6. c/c++怎么连接数据库,并执行SQL语句
C++连接SQL数据库第一步 系统配置
1.设置SQLSERVER服务器为SQL登录方式,并且系统安全性中的sa用户要设置登录功能为“启用”,还有必须要有密码。
2.需要在ODBC中进行数据源配置,数据源选\”SQL SERVER”,登录方式使用“使用输入用户登录ID和密码的SQL SERVER验证”,并填写登录名(sa)和密码,注意一点,密码不能为空,这就意味着你的sa用户必须得有密码。否则无法通过系统本身的安全策略。测试通过就完成了配置。
C++连接SQL数据库第二步 C++与SQL连接初始化
1.在你所建立的C++项目中的stdafx.h头文件中引入ADO
具体代码如下
#import “c:\Program Files\Common Files\System\ado\msado15.dll”
no_namespace rename(”EOF”, “adoEOF”) rename(”BOF”, “adoBOF”)
2.定义_ConnectionPtr变量后调用Connection对象的Open方法建立与服务器的连接。
数据类型_ConnectionPtr实际上是由类模板_com_ptr_t得到的一个具体的实例类。_ConnectionPtr类封装了Connection对象的Idispatch接口指针及其一些必要的操作。可以通过这个指针操纵Connection对象。
例如连接SQLServer数据库,代码如下:
//连接到MS SQL Server
//初始化指针
_ConnectionPtr pMyConnect = NULL;
HRESULT hr = pMyConnect.CreateInstance(__uuidof(Connection));
if (FAILED(hr))
return;
//初始化链接参数
_bstr_t strConnect = “Provider=SQLOLEDB;
Server=hch;
Database=mytest;
uid=sa; pwd=sa;”; //Database指你系统中的数据库
//执行连接
try
{
// Open方法连接字串必须四BSTR或者_bstr_t类型
pMyConnect->Open(strConnect, “”, “”, NULL);
}
catch(_com_error &e)
{
MessageBox(e.Description(), “警告”, MB_OK|MB_ICONINFORMATION);
}//发生链接错误
C++连接SQL数据库第三步 简单的数据连接
//定义_RecordsetPtr变量,调用它Recordset对象的Open,即可打开一个数据集
//初始化过程 以下是个实例
_RecordsetPtr pRecordset;
if (FAILED(pRecordset.CreateInstance(__uuidof(Recordset))))
{
return;
}
//执行操作
try
{
pRecordset->Open(_variant_t(”userinfo”),
_variant_t((IDispatch*)pMyConnect),
adOpenKeyset, adLockOptimistic, adCmdTable);
}
catch (_com_error &e)
{
MessageBox(”无法打开userinfo表\”, “系统提示”,
MB_OK|MB_ICONINFORMATION);
}
C++连接SQL数据库第四步 执行SQL语句
这里是关键,我认为只要你懂点SQL语句那么一切都会方便许多比用上面的方法简单,更有效率点。
首先
m_pConnection.CreateInstance(_uuidof(Connection));
//初始化Connection指针
m_pRecordset.CreateInstance(__uuidof(Recordset));
//初始化Recordset指针
CString strSql=”select * from tb_goods”;//具体执行的SQL语句
m_pRecordset=m_pConnection->Execute(_bstr_t(strSql),
NULL, adCmdText);//将查询数据导入m_pRecordset数据容器
至此 你的SQL语句已经执行完成了m_pRecordset内的数据就是你执行的结果。
取得记录:
while(!m_pRecordset->adoEOF)//遍历并读取name列的记录并输出
{
CString temp = (TCHAR *)(_bstr_t)m_pRecordset->GetFields()->GetItem
(”name”)->Value;
AfxMessageBox(temp);
pRecordset->MoveNext();
}
插入记录
//记得初始化指针再执行以下操作
CString strsql;
strsql.Format(”insert into tb_goods(no,name, price)
values(’%d’,'%s’, %d)”,m_intNo,m_strName,m_intPrice);
m_pRecordset=m_pConnection->
Execute(_bstr_t(strsql),NULL,adCmdText);
修改记录
CString strsql;
strsql.Format(”update tb_goods set name=’%s’ ,
price=%d where no=%d “,m_strName,m_intPrice,m_intNo);
m_pRecordset=m_pConnection->Execute(_bstr_t(strsql),NULL,adCmdText);
删除记录
CString strsql;
strsql.Format(”delete from tb_goodswhere no= ‘%d’ “,m_intNo);
m_pRecordset=m_pConnection->Execute(_bstr_t(strsql),NULL,adCmdText)
7. C语言调用SQL数据库的问题!急!
你那个update语句是有where条件的,也可能根本就没有符合where条件的记录存在,所以也就不会有被更新的情况。但这个语句是被成功执行了的。所以返回值是成功的。
大概是这么回事。
8. C 如何调用SQL 中的表中的内容
EMBED SQL