以使用QSqlQuery向数据库中插入数据为例,做一个小结
背景:
最近在使用Qt+SQLite写一个本地数据库管理程序(使用者不懂SQL),在写向数据库中插入数据的
相关的函数时,我遇到了几个问题(暂时就这些):
1.向指定字段插入指定数据时,读取到的数据都是字符串类型,然而不同字段的数据类型是不同的,这
里需要获取不同字段的数据类型,再做类型转换
2.使用QSqlQuery插入数据时,具体实现的考虑
3.在实现一个功能时,是先将功能做出来,然后对一些最初未考虑到的问题慢慢补足,还是先尽可能考
虑到所有情况,再实现相关功能
4.此时某个函数的实现,是否有利于以后的优化,重构,扩展
我的尝试过的解决办法:
问题1:将用户输入的字符串切分,用QStringList保存(将被插入的数据与对应字段名,表名),取出数据
库中对应表的所有字段和该字段对应数据类型名,通过比较,得到用户输入的各个数据应被转换为的数
据类型,接着做类型转换
问题2:插入数据时,分为插入一行数据和插入多行数据,而QSqlQuery正好提供了对应的方法,但在实
现多行数据插入时,既可以使用QSqlQuery提供的插入多行数据的方法,也可以先实现插入一行数据,再
插入多行时,循环调用插入一行数据的函数
在实现插入函数时,是直接将用户输入的数据传入函数,还是先在另一个函数中对用户数据进行处理,再
传入插入函数?
使用QSqlQuery插入数据时,使用何种代码风格(ODBC等)
问题3,4:我是先实现出来,判断此时想到的实现方法是否可行,再进行修饰
具体代码等全部做完再贴吧。
以使用QSqlQuery向数据库中插入数据为例,做一个小结的更多相关文章
- 向Oracle数据库中插入数据出错:ORA-01036 无效的变量名或数据
向Oracle数据库中插入数据出错: 经过排查,因为Update数据时没有出错,所以OracleHelper没有问题: 看异常信息提示:无效的变量和数据,应该是SQL语句的问题,调试时所传的实例Use ...
- mysql数据库中插入数据INSERT INTO SET的优势
往mysql数据库中插入数据.以前常用 INSERT INTO 表名 (列名1,列名2…) VALUES(列值1,列值2); 如果在PHP程序中,就会写成如下示例(往商品库里增加商品) $sql = ...
- mongodb数据库中插入数据
mongodb数据库中插入数据 一:connection 访问集合: 在mongodb数据库中,数据是存储在许多数据集合中,可以使用数据库对象的collection方法访问一个集合.该方法使用如下: ...
- MyBatis框架的insert节点-向数据库中插入数据
需求:使用mybatis框架中的insert元素节点向数据库中插入数据 UserMapper.xml UserMapper.java 编写测试方法: @Test public void testAdd ...
- 解决getJdbcTemplate往oracle数据库中插入数据返回主键出错问题
我们使用Spring中的JdbcDaoSupport往Mysql中插入数据并返回主键代码,我们使用的mysql数据库,主键在数据库中设置为自增长:该类继承自JdbcDaoSupport,所以能直接使用 ...
- [oracle] 如何使用myBatis在数据库中插入数据并返回主键
在MyBatis中,希望在Oracle中插入数据的同时返回主键值,而非插入的条数. ① oracle使用 selectKey. U_USER_INFO_SEQ 是在数据库中定义好的这张表关联的序列se ...
- 数据库中插入数据时发生ora-00984错误
操作Oracle数据库,插入数据时显示:ORA-00984列在此处不允许错误,如下图所示: 出现的原因是由于,在插入字符或字符串型字段时.如果插入的数据是纯数字,则不会有错误:如果出现字符,则会报OR ...
- JDBC向数据库中插入数据
新建数据库,并插入相关数据. create database bbs; use bbs; create table article ( id int primary key auto_incremen ...
- django rest framework 向数据库中插入数据时处理外键的方法
一.models.py中 from django.db import models class UserModel(models.Model) user_name = models.CharField ...
随机推荐
- Manacher--雾窗寒对遥天暮,暮天遥对寒窗雾
POJ 3974: Palindrome 题意: 最长回文子串的长度... 分析: Manacher板子题... 代码: #include<algorithm> #include<i ...
- 【CF1043C】Smallest Word(构造)
题意:给定一个由a和b构成的字符串,可以选择翻转或不翻转他的每个前缀,翻转记为1不翻转记为0,求能将字符串排序的字典序最小的操作序列 n<=1e3 思路:考虑极长的一段a [t,w] 翻转t-1 ...
- HDU 4388 Stone Game II {博弈||找规律}
Stone Game II Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- http://store.microsoft.com/home.aspx
原文发布时间为:2009-07-26 -- 来源于本人的百度文章 [由搬家工具导入] http://store.microsoft.com/home.aspx
- VIM使用技巧4
使移动和修改都能重复,对重复的操作能够回退比能够重复更加重要: 目的操作重复回退序号 执行修改{edit}.u1 在行内查找下一个指定字符 f{char}/t{char};,2 在行内查找上一个指定字 ...
- StringBuilder 字符串拼接扩容
String str = a + b + c(a,b,c都是变量,非常量) 实际执行时,"+"操作是通过创建一个StringBuilder来操作的,即: StringBuilder ...
- LeetCode OJ-- Edit Distance **
https://oj.leetcode.com/problems/edit-distance/ 动态规划,它的小规模问题是:当 word1 word2都比较小的时候,word1变成 word2需要的 ...
- CodeChef February Challenge 2018 Points Inside A Polygon (鸽笼原理)
题目链接 Points Inside A Polygon 题意 给定一个$n$个点的凸多边形,求出$[ \frac{n}{10}]\ $个凸多边形内的整点. 把$n$个点分成$4$类: 横坐标奇, ...
- Akka 和 μJavaActors入门
Akka和μJavaActorsμJavaActors均是java的Actor库,其中Akka提供了叫为完整的Actor开发框架,较为庞大,学习成本很高,μJavaActors 是一个轻量级 ...
- Java线程池原理解读
引言 引用自<阿里巴巴JAVA开发手册> [强制]线程资源必须通过线程池提供,不允许在应用中自行显式创建线程. 说明:使用线程池的好处是减少在创建和销毁线程上所消耗的时间以及系统资源的开销 ...