📄 types_8h-source.html.svn-base
字号:
00554 this->_invalid(ODBCXX_STRING_CONST(<font class="stringliteral">"nanoseconds"</font>),n);00555 }00556 <font class="keywordflow">return</font> n;00557 }00558 00559 <font class="keyword">public</font>:<a name="l00561"></a><a class="code" href="classodbc_1_1_timestamp.html#a0">00561</a> Timestamp(<font class="keywordtype">int</font> year, <font class="keywordtype">int</font> month, <font class="keywordtype">int</font> day,00562 <font class="keywordtype">int</font> hour, <font class="keywordtype">int</font> minute, <font class="keywordtype">int</font> second,00563 <font class="keywordtype">int</font> nanos =0)00564 :Date(year,month,day), Time(hour,minute,second) {00565 this->setNanos(nanos);00566 }00567 00572 <font class="keyword">explicit</font> Timestamp();00573 <a name="l00578"></a><a class="code" href="classodbc_1_1_timestamp.html#a2">00578</a> Timestamp(std::time_t t) {00579 this->setTime(t);00580 }00581 <a name="l00586"></a><a class="code" href="classodbc_1_1_timestamp.html#a3">00586</a> Timestamp(<font class="keyword">const</font> ODBCXX_STRING& s) {00587 this->parse(s);00588 }00589 00590 <a name="l00592"></a><a class="code" href="classodbc_1_1_timestamp.html#a4">00592</a> Timestamp(<font class="keyword">const</font> Timestamp& t)00593 :Date(t),Time(t),nanos_(t.nanos_) {}00594 <a name="l00596"></a><a class="code" href="classodbc_1_1_timestamp.html#a5">00596</a> Timestamp& operator=(<font class="keyword">const</font> Timestamp& t) {00597 Date::operator=(t);00598 Time::operator=(t);00599 nanos_=t.nanos_;00600 <font class="keywordflow">return</font> *<font class="keyword">this</font>;00601 }00602 <a name="l00604"></a><a class="code" href="classodbc_1_1_timestamp.html#a6">00604</a> <font class="keyword">virtual</font> ~Timestamp() {}00605 00607 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setTime(std::time_t t);00608 <a name="l00610"></a><a class="code" href="classodbc_1_1_timestamp.html#a8">00610</a> <font class="keyword">virtual</font> std::time_t getTime() {00611 <font class="keywordflow">return</font> Date::getTime()+Time::getTime();00612 }00613 00616 <font class="keywordtype">void</font> parse(<font class="keyword">const</font> ODBCXX_STRING& s);00617 <a name="l00619"></a><a class="code" href="classodbc_1_1_timestamp.html#a10">00619</a> <font class="keywordtype">int</font> getNanos()<font class="keyword"> const </font>{00620 <font class="keywordflow">return</font> nanos_;00621 }00622 <a name="l00624"></a><a class="code" href="classodbc_1_1_timestamp.html#a11">00624</a> <font class="keywordtype">void</font> setNanos(<font class="keywordtype">int</font> nanos) {00625 nanos_=this->_validateNanos(nanos);00626 }00627 00628 <font class="keyword">virtual</font> ODBCXX_STRING toString() <font class="keyword">const</font>;00629 };00630 00631 00632 <font class="comment">//this is used for several 'lists of stuff' below</font>00633 <font class="comment">//expects T to be a pointer-to-something, and</font>00634 <font class="comment">//the contents will get deleted when the vector</font>00635 <font class="comment">//itself is deleted</font>00636 <font class="keyword">template</font> <<font class="keyword">class</font> T> <font class="keyword">class </font>CleanVector : <font class="keyword">public</font> std::vector<T> {00637 <font class="keyword">private</font>:00638 CleanVector(<font class="keyword">const</font> CleanVector<T>&); <font class="comment">//forbid</font>00639 CleanVector<T>& operator=(<font class="keyword">const</font> CleanVector<T>&); <font class="comment">//forbid</font>00640 00641 <font class="keyword">public</font>:00642 <font class="keyword">explicit</font> CleanVector() {}00643 <font class="keyword">virtual</font> ~CleanVector() {00644 <font class="keyword">typename</font> std::vector<T>::iterator i=this->begin();00645 <font class="keyword">typename</font> std::vector<T>::iterator end=this->end();00646 <font class="keywordflow">while</font>(i!=end) {00647 <font class="keyword">delete</font> *i;00648 ++i;00649 }00650 this->clear();00651 }00652 };00653 00654 <a name="l00657"></a><a class="code" href="classodbc_1_1_driver_message.html">00657</a> <font class="keyword">class </font>ODBCXX_EXPORT DriverMessage {00658 <font class="keyword">friend</font> <font class="keyword">class </font>ErrorHandler;00659 00660 <font class="keyword">private</font>:00661 ODBCXX_CHAR_TYPE state_[SQL_SQLSTATE_SIZE+1];00662 ODBCXX_CHAR_TYPE description_[SQL_MAX_MESSAGE_LENGTH];00663 SQLINTEGER nativeCode_;00664 00665 DriverMessage() {}00666 <font class="preprocessor">#if ODBCVER < 0x0300</font>00667 <font class="preprocessor"></font> <font class="keyword">static</font> DriverMessage* fetchMessage(SQLHENV henv,00668 SQLHDBC hdbc,00669 SQLHSTMT hstmt);00670 <font class="preprocessor">#else</font>00671 <font class="preprocessor"></font> <font class="keyword">static</font> DriverMessage* fetchMessage(SQLINTEGER handleType,00672 SQLHANDLE h,00673 <font class="keywordtype">int</font> idx);00674 <font class="preprocessor">#endif</font>00675 <font class="preprocessor"></font>00676 <font class="keyword">public</font>:00677 <font class="keyword">virtual</font> ~DriverMessage() {}00678 00679 <font class="keyword">const</font> ODBCXX_CHAR_TYPE* getSQLState()<font class="keyword"> const </font>{00680 <font class="keywordflow">return</font> state_;00681 }00682 00683 <font class="keyword">const</font> ODBCXX_CHAR_TYPE* getDescription()<font class="keyword"> const </font>{00684 <font class="keywordflow">return</font> description_;00685 }00686 00687 <font class="keywordtype">int</font> getNativeCode()<font class="keyword"> const </font>{00688 <font class="keywordflow">return</font> nativeCode_;00689 }00690 };00691 00692 <a name="l00695"></a><a class="code" href="classodbc_1_1_s_q_l_exception.html">00695</a> <font class="keyword">class </font>SQLException : <font class="keyword">public</font> std::exception {00696 <font class="keyword">private</font>:00697 ODBCXX_STRING reason_;00698 ODBCXX_STRING sqlState_;00699 <font class="keywordtype">int</font> errorCode_;00700 <font class="preprocessor">#if defined(ODBCXX_UNICODE)</font>00701 <font class="preprocessor"></font> std::string reason8_;00702 <font class="preprocessor">#elif defined(ODBCXX_QT)</font>00703 <font class="preprocessor"></font> QCString reason8_;00704 <font class="preprocessor">#endif</font>00705 <font class="preprocessor"></font> <font class="keyword">public</font>:<a name="l00707"></a><a class="code" href="classodbc_1_1_s_q_l_exception.html#a0">00707</a> <a class="code" href="classodbc_1_1_s_q_l_exception.html#a0">SQLException</a>(<font class="keyword">const</font> ODBCXX_STRING& reason =ODBCXX_STRING_CONST(<font class="stringliteral">""</font>),00708 <font class="keyword">const</font> ODBCXX_STRING& sqlState =ODBCXX_STRING_CONST(<font class="stringliteral">""</font>),00709 <font class="keywordtype">int</font> vendorCode =0)00710 :reason_(reason),00711 sqlState_(sqlState),00712 errorCode_(vendorCode)00713 #if defined(ODBCXX_UNICODE)00714 {00715 <font class="keyword">const</font> size_t length =<font class="keyword">sizeof</font>(wchar_t)*reason_.size();00716 <font class="keywordtype">char</font>* temp =<font class="keyword">new</font> <font class="keywordtype">char</font>[length+1];00717 wcstombs(temp,reason_.c_str(),length);00718 reason8_ =temp;00719 <font class="keyword">delete</font>[] temp;00720 }00721 <font class="preprocessor">#else</font>00722 <font class="preprocessor"></font><font class="preprocessor"># if defined(ODBCXX_QT)</font>00723 <font class="preprocessor"></font> ,reason8_(reason.local8Bit())00724 <font class="preprocessor"># endif</font>00725 <font class="preprocessor"></font>{}00726 <font class="preprocessor">#endif</font>00727 <font class="preprocessor"></font><a name="l00729"></a><a class="code" href="classodbc_1_1_s_q_l_exception.html#a1">00729</a> <a class="code" href="classodbc_1_1_s_q_l_exception.html#a0">SQLException</a>(<font class="keyword">const</font> DriverMessage& dm)00730 :reason_(dm.getDescription()),00731 sqlState_(dm.<a class="code" href="classodbc_1_1_s_q_l_exception.html#a4">getSQLState</a>()),00732 errorCode_(dm.getNativeCode()) {}00733 <a name="l00735"></a><a class="code" href="classodbc_1_1_s_q_l_exception.html#a2">00735</a> <font class="keyword">virtual</font> <a class="code" href="classodbc_1_1_s_q_l_exception.html#a2">~SQLException</a>() <font class="keywordflow">throw</font>() {}00736 <a name="l00738"></a><a class="code" href="classodbc_1_1_s_q_l_exception.html#a3">00738</a> <font class="keywordtype">int</font> <a class="code" href="classodbc_1_1_s_q_l_exception.html#a3">getErrorCode</a>()<font class="keyword"> const </font>{00739 <font class="keywordflow">return</font> errorCode_;00740 }00741 <a name="l00746"></a><a class="code" href="classodbc_1_1_s_q_l_exception.html#a4">00746</a> <font class="keyword">const</font> ODBCXX_STRING& <a class="code" href="classodbc_1_1_s_q_l_exception.html#a4">getSQLState</a>()<font class="keyword"> const </font>{00747 <font class="keywordflow">return</font> sqlState_;00748 }00749 <a name="l00751"></a><a class="code" href="classodbc_1_1_s_q_l_exception.html#a5">00751</a> <font class="keyword">const</font> ODBCXX_STRING& <a class="code" href="classodbc_1_1_s_q_l_exception.html#a5">getMessage</a>()<font class="keyword"> const </font>{00752 <font class="keywordflow">return</font> reason_;00753 }00754 00755 <a name="l00757"></a><a class="code" href="classodbc_1_1_s_q_l_exception.html#a6">00757</a> <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font>* <a class="code" href="classodbc_1_1_s_q_l_exception.html#a6">what</a>() <font class="keyword">const</font> <font class="keywordflow">throw</font>() {00758 <font class="comment">// the conversion from QString involves a temporary, which</font>00759 <font class="comment">// doesn't survive this scope. So here, we do a conditional</font>00760 <font class="preprocessor">#if defined(ODBCXX_QT)</font>00761 <font class="preprocessor"></font> <font class="keywordflow">return</font> reason8_.data();00762 <font class="preprocessor">#else</font>00763 <font class="preprocessor"></font><font class="preprocessor"># if defined(ODBCXX_UNICODE)</font>00764 <font class="preprocessor"></font> <font class="keywordflow">return</font> reason8_.c_str();00765 <font class="preprocessor"># else</font>00766 <font class="preprocessor"></font> <font class="keywordflow">return</font> reason_.c_str();00767 <font class="preprocessor"># endif</font>00768 <font class="preprocessor"></font><font class="preprocessor">#endif</font>00769 <font class="preprocessor"></font> }00770 };00771 00772 <a name="l00777"></a><a class="code" href="classodbc_1_1_s_q_l_warning.html">00777</a> <font class="keyword">class </font>SQLWarning : <font class="keyword">public</font> SQLException {00778 00779 <a class="code" href="classodbc_1_1_s_q_l_warning.html#a0">SQLWarning</a>(<font class="keyword">const</font> SQLWarning&); <font class="comment">//forbid</font>00780 SQLWarning& operator=(<font class="keyword">const</font> SQLWarning&); <font class="comment">//forbid</font>00781 00782 <font class="keyword">public</font>:<a name="l00784"></a><a class="code" href="classodbc_1_1_s_q_l_warning.html#a0">00784</a> <a class="code" href="classodbc_1_1_s_q_l_warning.html#a0">SQLWarning</a>(<font class="keyword">const</font> ODBCXX_STRING& reason = ODBCXX_STRING_CONST(<font class="stringliteral">""</font>),00785 <font class="keyword">const</font> ODBCXX_STRING& sqlState = ODBCXX_STRING_CONST(<font class="stringliteral">""</font>),00786 <font class="keywordtype">int</font> vendorCode =0)00787 :<a class="code" href="classodbc_1_1_s_q_l_exception.html#a0">SQLException</a>(reason,sqlState,vendorCode) {}00788 <a name="l00790"></a><a class="code" href="classodbc_1_1_s_q_l_warning.html#a1">00790</a> <a class="code" href="classodbc_1_1_s_q_l_warning.html#a0">SQLWarning</a>(<font class="keyword">const</font> DriverMessage& dm)00791 :<a class="code" href="classodbc_1_1_s_q_l_exception.html#a0">SQLException</a>(dm) {}00792 <a name="l00794"></a><a class="code" href="classodbc_1_1_s_q_l_warning.html#a2">00794</a> <font class="keyword">virtual</font> <a class="code" href="classodbc_1_1_s_q_l_warning.html#a2">~SQLWarning</a>() <font class="keywordflow">throw</font>() {}00795 };00796 00797 <font class="keyword">typedef</font> CleanVector<SQLWarning*> WarningList;00798 00799 00800 <font class="keyword">template</font> <<font class="keyword">class</font> T> <font class="keyword">class </font>Deleter {00801 <font class="keyword">private</font>:00802 T* ptr_;00803 <font class="keywordtype">bool</font> isArray_;00804 00805 Deleter(<font class="keyword">const</font> Deleter<T>&);00806 Deleter<T>& operator=(<font class="keyword">const</font> Deleter<T>&);00807 00808 <font class="keyword">public</font>:00809 <font class="keyword">explicit</font> Deleter(T* ptr, <font class="keywordtype">bool</font> isArray =<font class="keyword">false</font>)00810 :ptr_(ptr), isArray_(isArray) {}00811 ~Deleter() {00812 <font class="keywordflow">if</font>(!isArray_) {00813 <font class="keyword">delete</font> ptr_;00814 } <font class="keywordflow">else</font> {00815 <font class="keyword">delete</font>[] ptr_;00816 }00817 }00818 };00819 00820 } <font class="comment">// namespace odbc</font>00821 00822 00823 <font class="preprocessor">#endif // __ODBCXX_TYPES_H</font></pre></div><hr><div align=center><a class=footer href="http://orcane.net/freeodbc++/">Go back to the freeodbc++ homepage</a></div>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -