100{
101
102
103
104
105
106
107
108
109
111 Error("GetRowData()", "Empty row, resultset or MetaData");
112 return 0;
113 }
114 int fDataType, fDataSize, fPrecision, fScale;
115 char str_number[1024];
116 int int_val; double double_val; float float_val;
117 try {
120 (*fFields)[i] = "";
121 } else {
122 fDataType = (*fFieldInfo)[i].getInt(MetaData::ATTR_DATA_TYPE);
123 fDataSize = (*fFieldInfo)[i].getInt(MetaData::ATTR_DATA_SIZE);
124 fPrecision = (*fFieldInfo)[i].getInt(MetaData::ATTR_PRECISION);
125 fScale = (*fFieldInfo)[i].getInt(MetaData::ATTR_SCALE);
126 switch (fDataType) {
127 case 2:
128 if (fScale == 0 || fPrecision == 0) {
129 int_val =
fResult->getInt(i+1);
130 sprintf(str_number, "%d", int_val);
131 } else if (fPrecision != 0 && fScale == -127) {
132 double_val =
fResult->getDouble(i+1);
133 sprintf(str_number, "%lf", double_val);
134 } else if (fScale > 0) {
135 float_val =
fResult->getFloat(i+1);
136 sprintf(str_number, "%f", float_val);
137 }
138 (*fFields)[i] = str_number;
139 break;
140 case 96:
141 case 1:
142 (*fFields)[i] =
fResult->getString(i+1);
143 break;
144 case 187:
145 case 232:
146 case 188:
147 (*fFields)[i] = (
fResult->getTimestamp(i+1)).toText(
"MM/DD/YYYY, HH24:MI:SS",0);
148 break;
149 case 12:
150
151 (*fFields)[i] =
fResult->getString(i+1);
152 break;
153 default:
154 Error("GetRowData()","Oracle type %d not supported.", fDataType);
155 return 0;
156 }
157 }
158 }
159 return 1;
160 } catch (SQLException &oraex) {
161 Error("GetRowData()", (oraex.getMessage()).c_str());
162 return 0;
163 }
164}