SQLite数据库本身是否支持ORM,怎么样才能支持ORM,给个VC++能跑起来的测试工程下载连接,或者给出所有的代码
时间: 2024-04-01 22:33:13 浏览: 14
SQLite数据库本身并不支持ORM,但是可以通过使用第三方库来实现ORM的功能。常见的SQLite ORM框架有:
1. SQLite C++ Wrapper:https://sqlite.org/cplusplus.html
2. SOCI:http://soci.sourceforge.net/
3. QtSql:https://doc.qt.io/qt-5/sql-connecting.html
其中,比较简单易用的是SQLite C++ Wrapper。下面是一个VC++能跑起来的测试工程下载链接以及相应的代码示例:
下载链接:https://github.com/utelle/SQLiteCpp/releases/tag/v2.2.0
代码示例:
```cpp
#include <iostream>
#include "SQLiteCpp/SQLiteCpp.h"
int main()
{
try
{
// Open a database file
SQLite::Database db("company.db3");
// Create a new table
db.exec("CREATE TABLE COMPANY("
"ID INT PRIMARY KEY NOT NULL,"
"NAME TEXT NOT NULL,"
"AGE INT NOT NULL,"
"ADDRESS CHAR(50),"
"SALARY REAL);");
// Insert some records
db.exec("INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY) "
"VALUES (1, 'Paul', 32, 'California', 20000.00 ); "
"INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY) "
"VALUES (2, 'Allen', 25, 'Texas', 15000.00 ); "
"INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY) "
"VALUES (3, 'Teddy', 23, 'Norway', 20000.00 ); "
"INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY) "
"VALUES (4, 'Mark', 25, 'Rich-Mond', 65000.00 );");
// Query the database using a prepared statement
SQLite::Statement query(db, "SELECT * FROM COMPANY WHERE AGE > ?");
// Bind the value to the first parameter in the statement
query.bind(1, 25);
// Loop through the results
while (query.executeStep())
{
int id = query.getColumn(0);
std::string name = query.getColumn(1);
int age = query.getColumn(2);
std::string address = query.getColumn(3);
double salary = query.getColumn(4);
std::cout << "ID = " << id << ", ";
std::cout << "NAME = " << name << ", ";
std::cout << "AGE = " << age << ", ";
std::cout << "ADDRESS = " << address << ", ";
std::cout << "SALARY = " << salary << std::endl;
}
}
catch (std::exception& e)
{
std::cerr << "Exception caught: " << e.what() << std::endl;
}
return 0;
}
```
此示例代码中,使用了SQLiteCpp库来访问SQLite数据库,并实现了一个简单的ORM功能,将公司员工信息存储到了SQLite数据库中,并查询出年龄大于25岁的员工信息。