This repository has been archived by the owner on Mar 16, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathsqlard-test.cpp
111 lines (101 loc) · 3.02 KB
/
sqlard-test.cpp
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
//#include "stdafx.h"
#include "sqlard.h"
int main()
{
/* local */
unsigned char ipAddr[] = { 127,0,0,1 };
unsigned short port = 1433;
wchar_t userName[] = L"arduino";
wchar_t passWord[] = L"arduino";
wchar_t database[] = L"test";
SQLard MSSQL(ipAddr, port);
if (MSSQL.connect())
{
MSSQL.setCredentials(database, userName, passWord, L"host");
if (MSSQL.login()) {
printf("login ok \n");
}
while(true)
{
SQLardTableResult * tr = MSSQL.executeReader(L"SELECT water_enable FROM ROOM_STATUS WHERE dnd_guid = '4567A1FF-3790-4519-83EE-A709A59E238F'");
printf("COLUMNS\n");
for (int i = 0; i < tr->m_usColumnCount; i++) {
wprintf(L"%s|", tr->m_arColumnData[i]->m_wcstrColumnName);
}
printf("\n");
while (tr->GetRow() != nullptr)
{
const SQLardRowData & pRow = (*tr->GetRow());
for (int i = 0; i < tr->m_usColumnCount; i++) {
const SQLardRowFieldData * pField = pRow[i];
switch (tr->GetColumnDataType(i))
{
/*case SQLardDataType::GUIDTYPE:
break;*/
case SQLardDataType::VARCHARTYPE:
case SQLardDataType::CHARTYPE:
case SQLardDataType::BIGVARCHRTYPE:
case SQLardDataType::BIGCHARTYPE:
printf("%s\t\t", pField->asVarchar());
break;
case SQLardDataType::BITTYPE:
printf("%s\t\t", pField->interpret_integer<bool>() == true ? "true":"false");
break;
case SQLardDataType::INT1TYPE:
printf("%d\t\t", pField->interpret_integer<unsigned char>());
break;
case SQLardDataType::INT2TYPE:
printf("%d\t\t", pField->interpret_integer<signed short>());
break;
case SQLardDataType::INT4TYPE:
printf("%d\t\t", pField->interpret_integer<signed long>());
break;
case SQLardDataType::NUMERICNTYPE: /* temporary */
case SQLardDataType::INT8TYPE:
printf("%lld\t\t", pField->interpret_integer<signed long long>());
break;
case SQLardDataType::FLT4TYPE:
printf("%g\t\t", pField->asFloat());
break;
case SQLardDataType::FLT8TYPE:
printf("%g\t\t", pField->asDouble());
break;
case SQLardDataType::BINARYTYPE:
case SQLardDataType::BIGBINARYTYPE:
case SQLardDataType::BIGVARBINTYPE:
case SQLardDataType::VARBINARYTYPE:
case SQLardDataType::GUIDTYPE:
printf("0x");
for (int i = 0; i < pField->m_usLength; i++) {
printf("%02x", pField->getByte(i));
}
printf("\t\t");
break;
case SQLardDataType::DATETIMETYPE:
{
time_t val = pField->asDateTime();
struct tm q;
localtime_s(&q, &val);
printf("now: %d-%d-%d %d:%d:%d\t\t",
q.tm_year + 1900,
q.tm_mon + 1,
q.tm_mday,
q.tm_hour,
q.tm_min,
q.tm_sec);
}
break;
default:
printf("undefined (yet)\n");
break;
}
}
printf("\n");
tr->MoveNext();
}
delete tr;
}
}
getchar();
return 0;
}