重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
连接代码如下:
成都创新互联,专注为中小企业提供官网建设、营销型网站制作、响应式网站设计、展示型成都网站建设、网站制作等服务,帮助中小企业通过网站体现价值、有效益。帮助企业快速建站、解决网站建设与网站营销推广问题。
int main()
{
EXEC SQL BEGIN DECLARE SECTION;
char oc_passwd[101]; /*数据库密码*/
char oc_userid[101]; /*数据库用户名*/
char oc_dbname[101]; /*数据库名*/
char oc_coad[101];
EXEC SQL END DECLARE SECTION;
memset(oc_passwd, 0x00, sizeof(oc_passwd));
memset(oc_userid, 0x00, sizeof(oc_userid));
memset(oc_dbname, 0x00, sizeof(oc_dbname));
/*取数据库用户名*/
strcpy(oc_userid, "userid");
/*取数据库用户密码*/
strcpy(oc_passwd, "passwd") ;
/*取数据库名*/
strcpy(oc_dbname, "dbname");
EXEC SQL CONNECT :oc_userid
IDENTIFIED BY :oc_passwd
USING :oc_dbname;
if (sqlca.sqlcode != 0)
{
printf("用户名[%s]密码[%s]数据库[%s]\n", oc_userid, oc_passwd, oc_dbname);
printf("连接数据库失败,sqlcode=%d\n", sqlca.sqlcode);
return -1;
}
/*读table取coad字段*/
memset(oc_coad, 0x00, sizeof(oc_coad));
EXEC SQL SELECT coad
INTO :oc_coad
FROM table
WHERE 1=1;
if (sqlca.sqlcode == NORECORD)
{
printf("查询无记录\n");
return -1;
}
else if (sqlca.sqlcode != 0)
{
printf("查询失败,sqlcode=%d\n", sqlca.sqlcode);
return -1;
}
return 0;
}
连接数据库的方法有很多种。C语言最常用的是ODBC,最好你自己参考下网络上关于ODBC的资料。也可以使用ADO来连接,这个比较方便,但需要自己导入ADO的库。
其实不论是什么数据库,只要不是自己纯手动去连接,其基本连接方法以及操作方法,都是差不多的。比如ADO,不同的数据库,其连接基本上只是连接字符串的不同,系统,包括操作系统和数据库系统,在底层都有接口的统一封装。
一般C语言连接oracle数据库通过使用oracle提供的OCI接口和PROC编程接口两种方式。
OCI方式纯粹是一些函数接口。
PROC是oracle提供的一种C与ORACLE SQL的混合编程。程序(以.pc为后缀)编好之后,使用oracle提供的proc预编译程序,将pc文件编译成c文件(这一过程,相当于将SQL转换为OCI的接口),然后再使用c语言编译器生成可以执行文件。
OCI方式不容易入门,它拥有大量的接口函数,要很快熟悉它,非常难。但OCI方式的编程效率很高。
porc方式简单易用。可用于对性能要求不太高的项目。
通过代码来连接。
oracle19c安装好之后导入scott.sql脚本(可以在oracle的安装目录的查找)之后在通过代码连接scott就可以登陆了。
Oracle19c也就是12.2.0.3,是OracleDatabase12c和18c系列产品的最终版本,因此也是“长期支持”版本(以前称为“终端版本”)。
前提是电脑必须安装oracle客户端。
配置方法:
1、找到oracle的安装目录。如:C:\oracle\product\10.2.0\db_1\network\ADMIN
2、找到tnsnames.ora文件。
3、用文本方式打开,添加以下内容:
本地实例名 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 远程数据库IP地址)(PORT = 远程服务器端口号))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = 远程数据库服务名)
)
)
其中中文部分是需要修改的部分,除第一个“本地实例名”外,其他需要跟远程数据库管理员咨询,本地实例名就是方便自己识别数据库的一个名字,可以自定义。
4、然后打开pl/sql就能看到自己创建的链接,如图:
有三种办法:
1、用ODBC,安装ODBC驱动,使用微软提供的ODBC的API访问数据库;
2、用ORACLE提供的OCI API调用方式;
3、用ORACLE提供的PRO C方式。
如果你熟悉SQL,建议用方式3,如果熟悉ODBC,建议用方式1,方式2比较麻烦些。
以下代码是我用PRO C编写的,供参考:
int ProcConnect(char * sDatabaseName,char * sUserName, char * sPassword)
{
EXEC SQL CONNECT :sUserName IDENTIFIED BY :sPassword USING :sDatabaseName;
if(DBError("Connect Database failed.")) return FALSE;
else return TRUE;
}
/*===========================================================================*/
void ProcCommit()
{
EXEC SQL COMMIT;
}
/*===========================================================================*/
void ProcCommitRelease()
{
EXEC SQL COMMIT RELEASE;
}
/*===========================================================================*/
void ProcRollback()
{
EXEC SQL ROLLBACK;
}
/*===========================================================================*/
void ProcRollbackRelease()
{
EXEC SQL ROLLBACK RELEASE;
}
/*===========================================================================*/
int DBError(char * sMsg)
{
char sErrMsg[1024];
int nRetCode;
size_t szBuf_len, szMsg_len;
if (sqlca.sqlcode = 0) return FALSE;
szBuf_len = sizeof(sErrMsg);
sqlglm(sErrMsg, szBuf_len, szMsg_len);
sErrMsg[szMsg_len] = 0;
sprintf(sDBErrorBuff,"\r\nSQL DBError point:%s", sMsg);
sprintf(sDBErrorBuff+strlen(sDBErrorBuff),"\r\nsqlcode = %d,%s\r\n", sqlca.sqlcode, rTrim(sErrMsg));
if(OraDBDisconnected)
{
printf("The DBConnection was broken!\r\n");
exit(-1);
}
else nRetCode = TRUE;
printf("%s\r\n",sDBErrorBuff);
return nRetCode;
}