From e51bed25201e89b2fed36e45e1642812d88f6398 Mon Sep 17 00:00:00 2001
From: znone <glyc@sina.com.cn>
Date: Tue, 07 Mar 2017 11:06:28 +0000
Subject: [PATCH] 增加对ODBC的支持。
---
include/qtl_sqlite.hpp | 62 ++++++++++++++-----------------
1 files changed, 28 insertions(+), 34 deletions(-)
diff --git a/include/qtl_sqlite.hpp b/include/qtl_sqlite.hpp
index 86ee324..20f7e00 100644
--- a/include/qtl_sqlite.hpp
+++ b/include/qtl_sqlite.hpp
@@ -77,63 +77,63 @@
}
}
- void bind(int col, int value)
+ void bind_param(int index, int value)
{
- verify_error(sqlite3_bind_int(m_stmt, col, value));
+ verify_error(sqlite3_bind_int(m_stmt, index+1, value));
}
- void bind(int col, int64_t value)
+ void bind_param(int index, int64_t value)
{
- verify_error(sqlite3_bind_int64(m_stmt, col, value));
+ verify_error(sqlite3_bind_int64(m_stmt, index+1, value));
}
- void bind(int col, double value)
+ void bind_param(int index, double value)
{
- verify_error(sqlite3_bind_double(m_stmt, col, value));
+ verify_error(sqlite3_bind_double(m_stmt, index+1, value));
}
- void bind(int col, const char* value, size_t n=-1)
+ void bind_param(int index, const char* value, size_t n=-1)
{
if(value)
- verify_error(sqlite3_bind_text(m_stmt, col, value, (int)n, NULL));
+ verify_error(sqlite3_bind_text(m_stmt, index+1, value, (int)n, NULL));
else
- verify_error(sqlite3_bind_null(m_stmt, col));
+ verify_error(sqlite3_bind_null(m_stmt, index+1));
}
- void bind(int col, const wchar_t* value, size_t n=-1)
+ void bind_param(int index, const wchar_t* value, size_t n=-1)
{
if(value)
- verify_error(sqlite3_bind_text16(m_stmt, col, value, (int)n, NULL));
+ verify_error(sqlite3_bind_text16(m_stmt, index+1, value, (int)n, NULL));
else
- verify_error(sqlite3_bind_null(m_stmt, col));
+ verify_error(sqlite3_bind_null(m_stmt, index+1));
}
- void bind(int col, const std::string& value)
+ void bind_param(int index, const std::string& value)
{
- bind(col, value.data(), value.size());
+ bind_param(index, value.data(), value.size());
}
- void bind(int col, const std::wstring& value)
+ void bind_param(int index, const std::wstring& value)
{
- bind(col, value.data(), value.size());
+ bind_param(index, value.data(), value.size());
}
- void bind(int col, const const_blob_data& value)
+ void bind_param(int index, const const_blob_data& value)
{
if(value.size)
{
if(value.data)
- verify_error(sqlite3_bind_blob(m_stmt, col, value.data, (int)value.size, NULL));
+ verify_error(sqlite3_bind_blob(m_stmt, index+1, value.data, (int)value.size, NULL));
else
- verify_error(sqlite3_bind_zeroblob(m_stmt, col, (int)value.size));
+ verify_error(sqlite3_bind_zeroblob(m_stmt, index+1, (int)value.size));
}
else
- verify_error(sqlite3_bind_null(m_stmt, col));
+ verify_error(sqlite3_bind_null(m_stmt, index+1));
}
- void bind_zero_blob(int col, int n)
+ void bind_zero_blob(int index, int n)
{
- verify_error(sqlite3_bind_zeroblob(m_stmt, col, (int)n));
+ verify_error(sqlite3_bind_zeroblob(m_stmt, index+1, (int)n));
}
- void bind(int col, qtl::null value)
+ void bind_param(int index, qtl::null)
{
- verify_error(sqlite3_bind_null(m_stmt, col));
+ verify_error(sqlite3_bind_null(m_stmt, index+1));
}
- void bind(int col)
+ void bind_param(int index, std::nullptr_t)
{
- verify_error(sqlite3_bind_null(m_stmt, col));
+ verify_error(sqlite3_bind_null(m_stmt, index+1));
}
int get_parameter_count() const
{
@@ -146,12 +146,6 @@
int get_parameter_index(const char* param_name) const
{
return sqlite3_bind_parameter_index(m_stmt, param_name);
- }
-
- template<class Param>
- void bind_param(size_t index, const Param& param)
- {
- bind((int)index+1, param);
}
template<class Type>
@@ -181,7 +175,7 @@
{
size_t col_length=get_column_length((int)index);
if(col_length>0)
- strncpy(value, (const char*)sqlite3_column_text(m_stmt, (int)index), std::min(length, col_length));
+ strncpy(value, (const char*)sqlite3_column_text(m_stmt, (int)index), std::min(length, col_length+1));
else
memset(value, 0, length*sizeof(char));
}
@@ -189,7 +183,7 @@
{
size_t col_length=sqlite3_column_bytes16(m_stmt, (int)index);
if(col_length>0)
- wcsncpy(value, (const wchar_t*)sqlite3_column_text16(m_stmt, (int)index), std::min(length, col_length));
+ wcsncpy(value, (const wchar_t*)sqlite3_column_text16(m_stmt, (int)index), std::min(length, col_length+1));
else
memset(value, 0, length*sizeof(wchar_t));
}
--
Gitblit v1.9.3