加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Sqlite3编程初级入门

发布时间:2020-12-12 20:35:40 所属栏目:百科 来源:网络整理
导读:#include "sqlite3.h"// DATABASE NAME#define DB_SQLITE3_TEST_FULLNAME "test.db"// TABLE NAME#define DB_TestTableName"test"static sqlite3* td_db=NULL;static char* pTempOutputMsg=NULL;// 1. open/creat databasebool OpenDatabase(char *pInputDat
#include "sqlite3.h"

// DATABASE NAME
#define DB_SQLITE3_TEST_FULLNAME 	"test.db"				

// TABLE NAME
#define DB_TestTableName	"test"


static sqlite3* td_db=NULL;
static char* pTempOutputMsg=NULL;



// 1. open/creat database
bool OpenDatabase(char *pInputDatabase)
{
	if(SQLITE_OK != sqlite3_open(pInputDatabase,&td_db))
	{
		printf("%sn",sqlite3_errmsg(td_db));
		return false;
	}

	sqlite3_exec(td_db,"PRAGMA synchronous = OFF",&pTempOutputMsg);//如果有定期备份的机制,而且少量数据丢失可接受,用OFF
	sqlite3_exec(td_db,"PRAGMA page_size = 4096",&pTempOutputMsg);//只有在未创建数据库时才能设置
	sqlite3_exec(td_db,"PRAGMA cache_size = 8000",&pTempOutputMsg); //建议改为8000
	sqlite3_exec(td_db,"PRAGMA case_sensitive_like=1",&pTempOutputMsg);//搜索中文字串

	return true;
}

// 2. create table.
bool CreateTable(char tInputTableNo)
{
	char pTempCmd[256];

	switch( tInputTableNo )
	{
	case 0:
		sprintf(pTempCmd,"create table %s %s",DB_TestTableName," ("
		"idx integer,"
		"lang integer"
		");");
		break;
	default:
		break;
	}

	//JPRINTF(("pTempCmd = %s n",pTempCmd));
	if(SQLITE_OK!=sqlite3_exec(td_db,pTempCmd,NULL,&pTempOutputMsg))
	{
		printf("%sn",sqlite3_errmsg(td_db));
		return false;
	}
	else
		return true;
}

// 3. insert records into table.
bool InsertRecords(char* pInputTableName,int pInputInsertCnt)
{
	int i;
	char pTempCmd[256];

	for(i=0;i<pInputInsertCnt;++i)
	{
		sprintf(pTempCmd,"insert into %s values(7351,%d,'WWW',30,3,1,2,4);",pInputTableName,i);
		//JPRINTF(("SQL: %s n",pTempCmd));
		if( SQLITE_OK!=sqlite3_exec(td_db,&pTempOutputMsg) )
			return false;			
	}
	return true;
}

// 4. show records in the table.
bool ShowRecords(char *pInputTableName)
{
	sqlite3_stmt* stmt=NULL;
	char* szMsg=NULL;
	int one=0,two=0;
	char *pTempName;
	char pTempCmd[256];

	sprintf(pTempCmd,"select * from %s;",pInputTableName);
	if(SQLITE_OK!=sqlite3_prepare(td_db,strlen(pTempCmd),&stmt,NULL))
		return false;
	
	printf("ntonetttwottnamen");
	printf("t--------------------n");
	while(1)
	{
		if(SQLITE_ROW!=sqlite3_step(stmt))
			break;
		//sqlite3_column_text(stmt,0);
		one=sqlite3_column_int(stmt,0);
		two=sqlite3_column_int(stmt,1);
		pTempName=(char *)sqlite3_column_blob(stmt,2);
		printf("t%dtt%dtt%sn",one,two,pTempName);
	}
	sqlite3_finalize(stmt);
	printf("n");
	return true;
}

// 5. delete the records from table.
bool DeleteRecords(char *pInputTableName,char *pInputIndexName,int pInputIndexValue)
{
	char pTempCmd[256];
	sprintf(pTempCmd,"delete from %s where %s=%d;",pInputIndexName,pInputIndexValue);

	if(SQLITE_OK!=sqlite3_exec(td_db,sqlite3_errmsg(td_db));
		return false;
	}
	else
		return true;
}

// 6. drop the point table.
bool DropTable(char *pInputTableName)
{
	char pTempCmd[256];
	sprintf(pTempCmd,"drop table %s;",pInputTableName);

	if(SQLITE_OK!=sqlite3_exec(td_db,sqlite3_errmsg(td_db));
		return false;
	}
	else
		return true;
}

// 7 .Search database
bool SearchDatabase(char *pInputTableName,int pInputIndexValue)
{
	int nret;
	int one=0,two=0;
	char *pTempName;
	char pTempCmd[256];
	sqlite3_stmt* stmt=NULL;
	
	sprintf(pTempCmd,"select * from %s where %s=%d;",sqlite3_errmsg(td_db));
		return false;
	}

	printf("ntonetttwottnamen");
	printf("t--------------------n");
	while(1)
	{
		if(SQLITE_ROW!=sqlite3_step(stmt))
			break;
		one=sqlite3_column_int(stmt,pTempName);
	}
	sqlite3_finalize(stmt);
	printf("n");
	return true;
}

// 8. creat index on pointer table.
bool CreatIndexOnDatabase(char *pInputIndexName,char *pInputTableName,char *pInputRawName)
{
	char pTempCmd[256];
	sprintf(pTempCmd,"create index %s on %s(%s)",pInputRawName);

	if(SQLITE_OK!=sqlite3_exec(td_db,sqlite3_errmsg(td_db));
		return false;
	}
	else
		return true;
}

// 9. close database
bool CloseDatabase()
{
	sqlite3_close(td_db);
	td_db=NULL;
	return true;
}




int Db_Sqlite3_init(void)
{
	char pTempString[256];
	
	if(!OpenDatabase(DB_SQLITE3_TEST_FULLNAME))
	{
		JPRINTF(("nStep 1. Open database failed.n"));
		return -1;
	}else
		JPRINTF(("nStep 1. Open database succeeded.n"));

	if( !CreateTable(0) )
	{	
		JPRINTF(("Step 2. Create table failed.n"));
	}else
		JPRINTF(("Step 2. Create table succeeded.n"));

	if( !InsertRecords(DB_TestTableName,5) )
	{
		JPRINTF(("Step 3. Insert data to point table Failed.n"));
	}else
		JPRINTF(("Step 3. Insert data to point table succeeded.n"));

	if( !ShowRecords(DB_TestTableName))
	{
		JPRINTF(("Step 4. Read data from point table Failed.n"));
	}else
		JPRINTF(("Step 4. Read data from point table succeeded.n"));

	if( !DeleteRecords(DB_TestTableName,"lang",2) )
	{
		JPRINTF(("Step 5. Delete data from point table Failed.n"));
	}else
		JPRINTF(("Step 5. Delete data from point table succeeded.n"));

	// show again.
	if( !ShowRecords(DB_TestTableName))
	{
		JPRINTF(("Step 4. Read data from point table Failed.n"));
	}else
		JPRINTF(("Step 4. Read data from point table succeeded.n"));

#if 0
	if( !DropTable(DB_TestTableName))
	{
		JPRINTF(("Step 6. delete point table Failed.n"));
	}else
		JPRINTF(("Step 6. delete point table succeeded.n"));
#endif

	if( !SearchDatabase(DB_TestTableName,3) )
	{
		JPRINTF(("Step 7. Serch data from point table Failed.n"));
	}else
		JPRINTF(("Step 7. Serch data from point table succeeded.n"));


	if( !CreatIndexOnDatabase("lang_","lang") )
	{
		JPRINTF(("Step 8. create index on point table Failed.n"));
	}else
		JPRINTF(("Step 8. create index on point table succeeded.n"));

	CloseDatabase();

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读