qt数据库
❶ QT 数据库操作,该怎么处理
前提是在同一个局域网,或者网络IP可以互相ping通1、本地创建ORACLE监听2、防火墙开通端口3、远程安装ORACLE客户端,根据服务端的数据库名称、IP地址、端口配置TNS连接
❷ QT中怎么把edit的值更新到数据库中
一、引入
数据库创建的问题解决了,接下来就该使用数据库实现应用程序功能的时候了。基
本的操作包括创建、读取、更新、删除,即我们通常说的 CRUD(Create, Read, Update, Delete)。
在实现这些操作的时候,我们会使用到两个比较重要的类 sqliteDatabase 类和 Cursor 类。
二、创建表
1,execSQL(String sql):执行一条 sql 语句,且执行操作不能为 SELECT
因为它的返回值为 void,所以推荐使用 insert、update 方法等
2.,execSQL (String sql,Object[] bindArgs)
sql:执行一条 sql 语句
bindArgs:为 sql 语句中的?赋值
三、添加数据
1、execSQL(String sql)
2、使用对象的 insert 方法
ContentValues values = new ContentValues();
values.put(USERNAME, user.getUsername());
values.put(PASSWORD, user.getPassword());
db.insert(TABLE_NAME, null, values);
参数:
table:数据库中的表名
nullColumnHack:指定默认插入字段,为 null 时能插入数据
values:表示插入字段所对应的值,使用 put 方法。
四、删除数据
1、execSQL(String sql)
2、使用对象的 delete 方法
String whereClaues="_id=?";
String [] whereArgs={String.valueOf(id)};
//db.delete(TABLE_NAME, "_id="+id, null);
db.delete(TABLE_NAME, whereClaues, whereArgs);
参数
table:数据库的表名
whereClause:where 子句,比如:_id=?
whereArgs:where 子句中?的值
五、修改数据
1、execSQL(String sql)
2、使用对象的 delete 方法
ContentValues values = new ContentValues();
values.put(USERNAME, user.getUsername());
values.put(PASSWORD, user.getPassword());
String whereClaues="_id=?";
String [] whereArgs={String.valueOf(user.getId())};
db.update(TABLE_NAME, values, whereClaues, whereArgs);
参数
table:数据库的表名
values:代表要修改的值,修改方法还是 put(key,values)
whereClause:条件子句,比如 id=?,name=?
whereArgs:为 whereClause 中的?赋值,比如:new String[]{"1","张三"}
图:
参考代码:
程序内使用SQLite数据库是通过SQLiteOpenHelper进行操作
1. 自己写个类继承SQLiteOpenHelper,重写以下3个方法
public void onCreate(SQLiteDatabase db)
{//创建数据库时的操作,如建表}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
//版本更新的操作
}
2. 通过SQLiteOpenHelper的getWritableDatabase()获得一个SQLiteDatabase数据库,以后的操作都是对SQLiteDatabase进行操作。
3. 对得到的SQLiteDatabase对象进行增,改,删,查等操作。
代码
package cx.myNote;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
//DBOptions for login
public class DBOptions {
private static final String DB_NAME = "notes.db";
private static final String DB_CREATE="create table logininf(name text,pwd text)";
public class DBHelper extends SQLiteOpenHelper
{
public DBHelper(Context context) {
super(context,DB_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
//建表
db.execSQL(DB_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("drop table if exists logininf");
onCreate(db);
}
}
private Context context;
private SQLiteDatabase db;
private DBHelper dbHelper;
public DBOptions(Context context)
{
this.context = context;
dbHelper = new DBHelper(context);
db=dbHelper.getReadableDatabase();
}
//自己写的方法,对数据库进行操作
public String getName()
{
Cursor cursor = db.rawQuery("select name from logininf", null);
cursor.moveToFirst();
return cursor.getString(0);
}
public int changePWD(String oldP,String pwd)
{
ContentValues values = new ContentValues();
values.put("pwd", pwd);
return db.update("logininf", values,"pwd="+oldP, null);
}
}
insert方法插入的一行记录使用ContentValus存放,ContentValues类似于Map,它提供了put(String key, Xxx value)(其中key为数据列的列名)方法用于存入数据、getAsXxxx(String key)方法用于取出数据
❸ Qt如何对sqlite数据库进行加密
给SQLite数据库加密解密的方法:
1、创建空的sqlite数据库。
//数据库名的后缀你可以直接指定,甚至没有后缀都可以
//方法一:创建一个空sqlite数据库,用IO的方式
FileStream fs = File.Create(“c:\\test.db“);
//方法二:用SQLiteConnection
SQLiteConnection.CreateFile(“c:\\test.db“);
创建的数据库是个0字节的文件。
2、创建加密的空sqlite数据库
//创建一个密码为password的空的sqlite数据库
SQLiteConnection.CreateFile(“c:\\test2.db“);
SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\test2.db“);
SQLiteConnection cnn = new SQLiteConnection(“Data Source=D:\\test2.db“);
cnn.Open();
cnn.ChangePassword(“password“);
3、给未加密的数据库加密
SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\test.db“);
cnn.Open();
cnn.ChangePassword(“password“);
4、打开加密sqlite数据库
//方法一
SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\test2.db“);
cnn.SetPassword(“password“);
cnn.Open();
//方法二
SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder();
builder.DataSource = @”c:\test.db“;
builder.Password = @”password“;
SQLiteConnection cnn = new SQLiteConnection(builder.ConnectionString);
cnn .Open();
除了用上述方法给SQLite数据库加密以外,您还可以使用专业的文件加密软件将SQLite数据库加密。
超级加密 3000采用先进的加密算法,使你的文件和文件夹加密后,真正的达到超高的加密强度,让你的加密数据无懈可击。
超级加密3000使用起来,只要点击需要加密的文件的右键,即可轻松实现文件的加密。
解密只要双击已加密文件,输入密码即可轻松搞定。
❹ 查看Qt支持哪些数据库
Qt默认是支持QSQLITE数据库的
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setHostName("acidalia"); db.setDatabaseName("customdb"); db.setUserName("mojito"); db.setPassword("J0a1m8"); bool ok = db.open();
❺ qt怎样创建数据库以及数据库的操作
QT创建和插入的操作代码如下:
bool database::createDatabase()
{
QSqlQuery query; // 此处请查询 query的相关操作
qDebug() << "Start to create table...";
//create table: User
query.exec("CREATE TABLE [User] ( [userId] VARCHAR(40) NOT NULL, [username] VARCHAR(40) NOT NULL, [email] VARCHAR(40), [password] VARCHAR(40), [city] VARCHAR(20), PRIMARY KEY([userId]) )"); // 一定注意不要拼写错误,引号内是不提示拼写错误的。
//create table: Connect
query.exec("CREATE TABLE [Connect] ( [LeftUser] VARCHAR(40) NOT NULL, [RightUser] VARCHAR(40) NOT NULL, [relation] INTEGER DEFAULT '0' NULL, PRIMARY KEY ([LeftUser], [RightUser]))");
if (query.lastError().isValid())
{
qDebug() << query.lastError();
return false;
}
else
{
qDebug() << "Create database successfully.";
}
return true;
}
插入操作
bool database::adser( User user )
{
if (!db.isOpen())
{
createconnection();
}
QSqlQuery query;
qDebug() << "start to insert data";
query.exec("INSERT INTO [User] ( userId, username, email, password, city) VALUES(?,?,?,?,?)");
QVariantList userId;
userId << user.getUserId();
query.addBindValue(userId);
QVariantList username;
username << user.getUserName();
query.addBindValue(username);
QVariantList email;
email << user.getEmail();
query.addBindValue(email);
QVariantList password;
password << user.getPassword();
query.addBindValue(password);
QVariantList city;
city << user.getCity();
query.addBindValue(city);
try
{
if (!query.execBatch())
{
qDebug() << query.lastQuery();
qDebug() << query.lastError();
return NULL;
}
}
catch(...)
{
QMessageBox::critical(0, "Add New Node error!",
"Unable to add a new Node!/n/n"
"Click Cancel to exit.", QMessageBox::Cancel);
}
if( !UpdateConnectTable(user.getUserId(),user.getUserId(),2))
{
QMessageBox::critical(0,"","Update table Connect error");
return NULL;
}
return true;
}
❻ 如何用Qt连接数据库并导入文件
可以使用QT自带的数据库完成操作,以下是参考代码:
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); //添加数据库
db.setDatabaseName("note.db"); //创建一个note.db的文件存储数据
db.open(); //开启数据库
query = QSqlQuery(db); //获得访问数据库的query
query.exec(XXX); //执行指令(XXX为SQL指令)
db.close(); //关闭数据库
一般而言会将db变量作为全局变量或者数据成员,当需要访问的时候就获取一个query就可以了。
要实现所提到的功能,要好好看看QString、QStringList,这两玩意主要是临时存放数据、分割数据等作用,另外,要看QFile、QDir、QFileInfo、QTextStream,这四个主要用来读取文本数据。看看QVector或者QList等来存放读出来的数据。
另外,要实现这玩意,SQL的语句不要求精通,但是基本的Create、Insert、Select、Delete等操作要准确无误。否则出错了QT是看不出来的。QT不会检测SQL的准确性的。
❼ qt用sqlite关闭数据库问题
头文件里的db指针定义加上extern才会在多个CPP文件中共享。
还有,Qt有很好的资源自动释放机制,如果你只开一个连接的话没必要close
❽ Qt中用数据库和二维数组有什么区别
用数组的优势是速度快,读写方便,缺点:数据量不能太大,程序结束后数据不会保存在硬盘上,想要保存还得用文件或数据库
用数据库相比数组的优点:数据可以存在硬盘,可以存储更多的数据。缺点:读写速度慢些
❾ qt creator怎么查询数据库内容
qt creator怎么查询数据库内容:
U-boot中有一个用来保存很多有用信息的全局结构体 --gd_t(global data缩写),其中包括了bd变量,可以说gd_t结构体包括了u-boot中所有重要全局变量。最后传递给内核的参数,都是从gd和bd中来的,如上 述的setup_memory_tags函数的作用就是用bd中的值来初始化RAM相应的tag。
对于ARM平台这个结构体的定义大致如下:
include/asm-arm/global_data.h
typedef struct global_data {
bd_t *bd;
unsigned long flags;
unsigned long baudrate;
unsigned long have_console; /* serial_init() was called */
unsigned long reloc_off; /* Relocation Offset */
unsigned long env_addr; /* Address of Environment struct */
unsigned long env_valid; /* Checksum of Environment valid? */
unsigned long fb_base; /* base address of frame buffer */
void **jt; /* jump table */
} gd_t;
在U-boot中使用gd结构之前要用先用宏DECLARE_GLOBAL_DATA_PTR来声明。这个宏的定义如下:
include/asm-arm/global_data.h
#define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8")
从这个宏的定义可以看出,gd是一个保存在ARM的r8寄存器中的gd_t结构体的指针。
说明:本文的版本为U-boot-1.3.4、Linux-2.6.28,平台是ARM。
❿ 把excel表导入到qt的数据库中
有一个类,你网络找一下把,我用过一次,我也是网络找到的,我那个是读写excel的,你只需要把他读出来格式输入到数据库就好了,具体我找不到,我现在的这个是只能往excel中存了,被我裁剪了,不好意思,没法给你。你网络好好找找,公司屏蔽了好多网站,我暂时没法帮你找