java中怎么一次性向表中插入一条或多条数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中怎么一次性向表中插入一条或多条数据相关的知识,希望对你有一定的参考价值。

java连接数据库时,往数据库一次添加多条数据,可以在DAO层,使用executeBatch()批量插入数据,如下代码:
conn = DBToolkit.getConnection();
Statement stmt = conn.createStatement();
//连续添加多条SQL
stmt.addBatch("insert into testdb.book (kind, name) values (\'java\', \'java in aciton\')");
stmt.addBatch("insert into testdb.book (kind, name) values (\'c\', \'c in aciton\')");
//执行批量执行
stmt.executeBatch();
参考技术A 还是一条条insert的。。。。。有的支持在一次递交多条insert语句(中间有分隔符号) 参考技术B 通过JAVA代码中集合的方式在mybatis中循环插入 参考技术C 可以用spring框架本回答被提问者和网友采纳 参考技术D jdbc批处理

T-SQL中向表中插入一条数据,其中类型为Decimal的列对应的插入值为‘2400’可就是不行还报“......

T-SQL中向表中插入一条数据,其中类型为Decimal的列对应的插入值为‘2400’可就是不行还报“将截断字符串或二进制数据“,为什么呢求解(decimal类型不会用)

我这没问题的,你看下你设置的长度

 

9,2代表9位有效数字,小数点后2位

追问

唉,搞不懂耶╮(╯▽╰)╭

追答

我拿你的表试试,等一下

--------------补充------------

你好几个varchar没设置长度,默认长度就是1了

这样一下

运行一下这两句

alter table hos_house alter column topic varchar(50)
alter table hos_house alter column contents varchar(50)追问

是丫明白啦谢谢啦,亲(*^__^*) 嘻嘻

参考技术A 如果的确是这个字段被截断,那么你就要看一下你定义的DECIMAL类型变量的精度和小数位数。
DECLMAL(5,1)或DECIMAL(4,0)输入2400就不会被截断。
其中括号中第一个数字是十进制位数(包括小数位),第二个是小数位数。
你要是DECIMAL(5,2)这样只存存储三位整数和两位小数,你的数据就会被截断
一般定议:DECIMAL(12,4)就能够满足大多数要求追问

大神,求解?

追答

问题在你的VARCHAR类型的几个字段,没有定义长度,而默认长度为1,就是说明超过一个字就不行了。
就是TOPIC VARCHAR NOT NULL

和CONTENTS VARCHAR NOT NULL
写成
TOPIC VARCHAR(100) NOT NULL

CONTENTS VARCHAR(100) NOT NULL
就行了。

你那个PRICE字段精度是9,小数位是2,最大可以写到9999999.99是没问题的。
所以,你应该检查一下是不是由于其它字段造成的

追问

嗯嗯,varchar忘了给长度啦默认为1啦,是吖谢谢哈

本回答被提问者采纳
参考技术B 不是这个字段的原因
看看其他字段追问

改了怎么还不行呐,唉求解

追答

Topic,Contents,怎么不定义长度?
你试试
insert into HOS_HOUSE(UID,HID,HTID,Price,topic,contents,HTIME,COPY) values(1,1,2,2400,'','',getdate(),'')
肯定不会出错

兄弟,别用外键哦,这个会很麻烦的,尤其是你系统有点复杂的话

追问

o(︶︿︶)o 唉,又马虎啦,竟然忘定义长度了,谢谢啦!!!(*^__^*) 嘻嘻

以上是关于java中怎么一次性向表中插入一条或多条数据的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据更新操作

30-4 向表中插入多条记录

怎么向informix数据库表中一次插入多条记录

sqlite插入一万多条数据会报内存溢出 该怎么解决

sqlite插入一万多条数据会报内存溢出 该怎么解决

SQL 如何将一个表中的两条或多条拥有相同ID的记录合并为一条?