当前位置:首页 » 操作系统 » qt数据库

qt数据库

发布时间: 2022-02-06 04:58:21

❶ 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中存了,被我裁剪了,不好意思,没法给你。你网络好好找找,公司屏蔽了好多网站,我暂时没法帮你找

热点内容
英朗自动挡哪个配置最好 发布:2024-11-15 14:27:44 浏览:253
编译原理断言有哪几种 发布:2024-11-15 14:25:29 浏览:200
数据库数据重复 发布:2024-11-15 14:23:17 浏览:781
安卓端开发用什么IDE 发布:2024-11-15 14:13:51 浏览:554
阿里云查看访问ip 发布:2024-11-15 14:08:58 浏览:544
随机字符串php 发布:2024-11-15 14:03:46 浏览:122
怎样用数据库搭建服务器 发布:2024-11-15 13:58:39 浏览:478
android编码设置 发布:2024-11-15 13:50:02 浏览:907
androidstringchar 发布:2024-11-15 13:45:00 浏览:965
obs配置怎么弄 发布:2024-11-15 13:43:30 浏览:868