技术标签: 数据库
BOOL CSqliteDB::InitDB( WCHAR* pDbName, BOOL bType )
{
//数据库信息
m_pDbFileName = pDbName;
//初始化数据库
if( m_bInit )
{
CloseDatabase();
}
//判断数据库文件是否存在
if( !PathFileExists( m_pDbFileName ) && !CreateDatabase( m_pDbFileName ) )
{
//FS_LOG_ERROR( _T( "数据库文件丢失,并且创建失败,错误码: [%d]" ), 0x00003 );
return FALSE;
}
//连接到数据
if( !OpenDatabase( bType ) )
{
//FS_LOG_ERROR( _T( "连接到数据库失败,错误码: [%d]" ), 0x00004 );
return FALSE;
}
//输入密钥,如果无密码则加密,如果有密码则解密
//EnterEncryptKey( DB_ENCRYPT_KEY, strlen( DB_ENCRYPT_KEY ) );
//登录信息
if( !IsTableExist( TABLE_NAME ) && bType )
{
_CreateTable();
}
}
BOOL CDBBase::CloseDatabase()
{
m_bInit = false;
if (m_pDB == nullptr) return true;
sqlite3_finalize(m_statement);
int ret = CloseDBHandle();
m_statement = nullptr;
m_pDB = nullptr;
return (SQLITE_OK == ret);
}
int CDBBase::CloseDBHandle()
{
int code = sqlite3_close( m_pDB );
while ( SQLITE_BUSY == code )
{
code = SQLITE_OK; sqlite3_stmt * stmt = sqlite3_next_stmt( m_pDB, NULL );
if ( stmt == nullptr ) break;
code = sqlite3_finalize( stmt );
if ( code == SQLITE_OK )
{
code = sqlite3_close( m_pDB );
}
}
if ( SQLITE_OK != code )
{
m_nLastError = code;
}
return code;
}
BOOL CDBBase::CreateDatabase( WCHAR* pFilePullPath )
{
if( PathFileExists( pFilePullPath ) )
{
return TRUE;
}
return CreateFileEx( pFilePullPath );
}
BOOL CDBBase::CreateFileEx( WCHAR* pFileFullPath )
{
//要创建文件首先要检查路径存在否
int nIndex = -1;
WCHAR *p = _tcsrchr( pFileFullPath, _T( '\\' ) );
if( p == nullptr )
{
return FALSE;
}
//最后创建文件
HANDLE handle = CreateFile( pFileFullPath, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );
if( handle == INVALID_HANDLE_VALUE )
{
return FALSE;
}
CloseHandle( handle );
return true;
}
BOOL CDBBase::OpenDatabase( BOOL bType )
{
if( m_bInit && m_pDB == NULL ) return FALSE;
if( m_bInit && m_pDB ) return TRUE;
CHAR szName[FS_MAX_PATH] = { 0 };
#ifdef _UNICODE
int len = WBASELIB::ConvertUnicodeToUtf8( m_pDbFileName, szName, FS_MAX_PATH );
#endif
if( len != 0 )
{
int nRet = 0;
if( bType )
nRet = sqlite3_open( szName, &m_pDB );
else
nRet = sqlite3_open( ":memory:", &m_pDB );
if( nRet != SQLITE_OK )
{
m_nLastError = nRet;
m_pDB = NULL;
return FALSE;
}
}
else
return FALSE;
m_bInit = true;
return TRUE;
}
BOOL CDBBase::EnterEncryptKey( const char* key, int len )
{
//sqlite3_key( m_pDB, key, len );
return TRUE;
}
直接上代码public class MainActivity extends Activity { private Button submit; private TimeCount time; @Override protected void onCreate(Bundle savedInstanceState) { super.onCrea
这函数用于输出树杈真是超级方便,就是性能上没测试,有试过的给个回复。直接看语句吧:Oracle:select t.id,'|-'||LPAD('--', 2*(LEVEL-1),'-')||t.name from T_SYS_ORG t start with t.parentid is null and t.status = 1 connect by prior t.id = t.p
文章目录总有人替你做了一些事儿1. SpringBoot启动阶段划分2. Spring boot 的配置过程1. 绕不开的getSpringFactoriesInstances()3. 运行 Spring应用的开始源码简单浏览总结总有人替你做了一些事儿我们常常惊叹于 Spring boot 的极大简化开发者的开发流程,将我们从苦逼的 xml 配置中释放出来,可以更加愉快欢乐的摸鱼了。但是有没有想过几行简单的启动程序,Spring boot 是如何做到的呢?下面这个程序可以说是最最根本的一个 Spri
Ci2451是一款集成无线收发器和8位RISC(精简指令集)MCU的SOC芯片。主要应用在无线鼠标、无线键盘、无线遥控、体感设备、无线数据传输模块、无线遥控玩具等领域。
2013-11-2 17:34:11 org.apache.catalina.core.ApplicationDispatcher invoke严重: Servlet.service() for servlet jsp threw exceptionorg.apache.el.parser.ParseException: Encountered " "\" type=\" "" at l
在K210的例程中是有关dvp的代码,那么为了今后自己可以更好的理解在这记录一下,其实理解还是非常好理解的,不多说,先上代码。dvp.h#ifndef _DVPH_H#define _DVPH_H#include <stdio.h>#define DVP_WIDTH 640#define DVP_HIGHT 480extern volatile uint8_t dvp_finish_flag;extern volatile uint8_t gram_mux;exte
通常情况下,编译的代码是CPU“执行”程序的精确指令集。 在Java中,编译后的代码是一组精确的“虚拟CPU”指令,每个物理机器上都需要相同的指令。所以,从某种意义上讲,Java语言的devise者决定语言和编译代码将独立于平台,但由于代码最终必须在物理平台上运行,他们select将所有依赖于平台的代码JVM。这个对于JVM的要求与你的Turbo C例子相反。 使用Turbo C,编译器将生成与平..._1671465600
最近在解析数据,悲催遇到错误手动退出,于是数据库没存储上。于是只能从日志里提取数据再存到数据库。例如:[2018-05-23 18:09:36] [DEBUG] 5 : ('\xe6\xb1\x9f\xe8\x8b\x8f\xe7\x9c\x81\xe5\xb9\xbf\xe6\x92\xad\xe7\x94\xb5\xe8\xa7\x86\xe6\x80\xbb\xe5\x8f\xb0', '\...
这个错误是把string 类型转byte类型的时候出现的问题下面就会报错print(bytes(str_a))
今天有个朋友问我一个问题,现在Delphi创建的子窗体默认子窗体只能在主窗体上面,不能被主窗体遮挡,问如何才可以使主窗体获得焦点的时候可遮挡子窗体,本来以为很简单的问题,其实还是需要了解一个函数。SetWindowLong是一个Windows API函数。该函数用来改变指定窗口的属性.函数也将指定的一个32位值设置在窗口的额外存储空间的指定偏移位置。原型LONGSetWindowLong(HWNDhWnd,//handletowindow...
总结思路,照搬代码请修改
2020中国大学生程序设计竞赛(CCPC) - 网络选拔赛(部分题解)这次B题ac太多人了,现场时过了快700多人。导致我们队写完签到拼命打表这个题。思路不难,求一次[3,n+1]的连续和,再求[3,n]的素数和。但问题是n太大了,线性筛必定tle,而我们队没有数论选手就很难受(哭)。最后只能打表还是tle。赛后还有各种实验,就先补上部分题解。B题真就人均min_25筛,是我太菜了。思路并不难,从{2}开始,3如果连到2边,权值只能是2*3=6,4的话可以连到{2,3}中的2,权值即为本身,确实和Kru