-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsample1_connect.c
More file actions
112 lines (85 loc) · 2.29 KB
/
sample1_connect.c
File metadata and controls
112 lines (85 loc) · 2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <machbase_sqlcli.h>
#define MACHBASE_PORT_NO 5656
#define RC_SUCCESS 0
#define RC_FAILURE -1
SQLHENV gEnv;
SQLHDBC gCon;
void printError(SQLHENV aEnv, SQLHDBC aCon, SQLHSTMT aStmt, char *aMsg);
int connectDB();
void disconnectDB();
void printError(SQLHENV aEnv, SQLHDBC aCon, SQLHSTMT aStmt, char *aMsg)
{
SQLINTEGER sNativeError;
SQLCHAR sErrorMsg[SQL_MAX_MESSAGE_LENGTH + 1];
SQLCHAR sSqlState[SQL_SQLSTATE_SIZE + 1];
SQLSMALLINT sMsgLength;
if( aMsg != NULL )
{
printf("%s\n", aMsg);
}
if( SQLError(aEnv, aCon, aStmt, sSqlState, &sNativeError,
sErrorMsg, SQL_MAX_MESSAGE_LENGTH, &sMsgLength) == SQL_SUCCESS )
{
printf("SQLSTATE-[%s], Machbase-[%d][%s]\n", sSqlState, (int)sNativeError, sErrorMsg);
}
}
int connectDB()
{
char sConnStr[1024];
if( SQLAllocEnv(&gEnv) != SQL_SUCCESS )
{
printf("SQLAllocEnv error\n");
return RC_FAILURE;
}
if( SQLAllocConnect(gEnv, &gCon) != SQL_SUCCESS )
{
printf("SQLAllocConnect error\n");
SQLFreeEnv(gEnv);
gEnv = SQL_NULL_HENV;
return RC_FAILURE;
}
sprintf_s(sConnStr, sizeof(sConnStr), "DSN=127.0.0.1;UID=SYS;PWD=MANAGER;CONNTYPE=1;PORT_NO=%d", MACHBASE_PORT_NO);
if( SQLDriverConnect( gCon, NULL,
(SQLCHAR *)sConnStr,
SQL_NTS,
NULL, 0, NULL,
SQL_DRIVER_NOPROMPT ) != SQL_SUCCESS
)
{
printError(gEnv, gCon, NULL, "SQLDriverConnect error");
SQLFreeConnect(gCon);
gCon = SQL_NULL_HDBC;
SQLFreeEnv(gEnv);
gEnv = SQL_NULL_HENV;
return RC_FAILURE;
}
return RC_SUCCESS;
}
void disconnectDB()
{
if( SQLDisconnect(gCon) != SQL_SUCCESS )
{
printError(gEnv, gCon, NULL, "SQLDisconnect error");
}
SQLFreeConnect(gCon);
gCon = SQL_NULL_HDBC;
SQLFreeEnv(gEnv);
gEnv = SQL_NULL_HENV;
}
int main()
{
if( connectDB() == RC_SUCCESS )
{
printf("connectDB success.\n");
disconnectDB();
}
else
{
printf("connectDB failure.\n");
return RC_FAILURE;
}
return RC_SUCCESS;
}