
javalangNumberFormatException: For input string: " "
这个异常是说,在将字符串转换为number的时候格式化错误
“”空的字符串有对应的数值吗,显然没有
应该用 executeQuery() 执行。
第五步获取数据 jdbc索引从1开始,设置参数,参数索引位置是从1开始(Hibernate参数索引位置是从0开始) pssetInt(1, 10)过滤itemid大于10的记录循环读取结果集的每一行的每一列。
最后获取完数据一定要关闭数据库连接
详细过程代码如下:
public class SelectDemo {
public static void main(String[] args) throws ClassNotFoundException {
//第一步 加载驱动
ClassforName(“commysqlcjjdbcDriver”);
//第二步 获取数据库连接
//连接字符串
String url = “jdbc:mysql://localhost:3306/demo_db-2019characterEncoding+UTF-8&serverTimezone=Asia/Shanghai&useSSL=false”;
//用户名 密码
String userNmae = “root”;
String password = “root”;
//获取一个数据的连接
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = DriverManagergetConnection(url,userNmae,password);
//第三步 创建 Statement
//Statement statement = conncreateStatement();
///prepareStatement 中使用?作为变量的占位符
String strSql = “INSERT INTO sys_user(user_name,‘password’,real_name,”
+ “sys_user,‘sex’,sys_user,age,sys_userbirthday,”
+ “sys_userphone,sys_useraddress,sys_userrole_id”
+ “FROM sys_user”;
ps = connprepareStatement(strSql);
//第四步 参数赋值 索引从1开始
rs = psexecuteQuery();
List userList = new ArrayList();
SysUser user = null;
//第五步 获取数据 jdbc索引从1开始
while(rsnext()) {
user = new SysUser();
int id = rsgetInt(“id”);
usersetUserNmae(rsgetString(“user_name”));
usersetRealName(rsgetString(“real_name”));
usersetSex(rsgetByte(“sex”));
usersetBirthday(new Date(rsgetDate(“birthday”)getTime()));
userListadd(user);
}
for (SysUser sysUser : userList) {
Systemoutprintln(sysUser);
}
}catch (SQLException e) {
eprintStackTrace();
}finally {
if (conn != null) {
//记得一定要关闭数据库连接!!!
try {
connclose();
}catch(SQLException e) {
//TODO Auto-generated catch block
eprintStackTrace();
}
}
if (ps != null) {
try {
psclose();
}catch (SQLException e) {
//TODO Auto-generated catch block
eprintStackTrace();
}
在项目中,经常会碰到往数据库中导入大量数据,以便利用sql进行数据分析。在导入数据的过程中会碰到一些需要解决的问题,这里结合导入一个大约4G的txt数据的实践,把碰到的问题以及解决方法展现出来,一方面自己做个总结记录,另一方面希望对那些碰到相同问题的朋友有个参考。
我导入的数据是百科的txt文件,文件大小有4G多,数据有6500万余条,每条数据通过换行符分隔。每条数据包含三个字段,字段之间通过Tab分隔。将数据取出来的方法我采用的是用一个TripleData类来存放这三个字段,字段都用String,然后将多条数据存到List<TripleData>中,再将List<TripleData>存入mysql数据库,分批将所有数据存到mysql数据库中。
以上是一个大概的思路,下面是具体导入过程中碰到的问题。
1 数据库连接的乱码及兼容问题。
数据中如果有中文的话,一定要把链接数据库的url设置编码的参数,url设置为如下的形式。
URL="jdbc:mysql://"+IP+":"+PORT+"/"+DB_NAME+"useSSL=false&useUnicode=true&characterEncoding=utf-8";
把编码设置为UTF-8是解决乱码问题,设置useSSL是解决JDBC与mysql的兼容问题。如果不设置useSSL,会报错。类似于
Establishing SSL connection without server's identity verification is not recommended According to MySQL 5545+, 5626+ and 576+ requirements SSL connection must be established by default if explicit option isn't set For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false' You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification
这样的错误信息。主要是mysql版本比较高,JDBC版本比较低,需要兼容。
2 utf8mb4编码问题
在导入数据的过程中,还会碰到类似于
SQLException :Incorrect string value: '\xF0\xA1\x8B\xBE\xE5\xA2' for column 'name'
这样的错误信息,这是由于mysql中设置的utf-8是默认3个字节的,对于一般的数据是没有问题的,如果是大的数据量,里面难免会包含一些微信表情,或者特殊字符,它们占了4个字节,utf-8不能处理,所以报错。解决的办法就是mysql在553以后的版本引入了4个字节的utf-8编码,也就是utf8mb4,需要对mysql的编码重新设置。
可以按照以下步骤进行 *** 作,一是对要修改的数据库进行备份,虽然utf8mb4是向下兼容utf8的,但为了以防 *** 作不当,还是需要防患于未然,做好备份工作。二是要修改数据库的字符集编码为utf8mb4—UTF-8 Unicode,排序规则utf8mb4_general_ci。以上修改我是使用navicat进行修改的,如何用命令行修改,大家可以自行查找。三是要修改配置文件myini,在mysql安装的根目录下。加入以下设置。
127001指的本机地址,是本地的意思 ,改成localhost也是相同的意思。而3306是mysql的默认端口,除非安装了mysql后手动修改过端口,否则通常情况下没修改都是3306。
若是连接本地数据库为127001:3306。若进行了修改可以自行进入数据库查看。
扩展资料
结构化查询语言(SQL) 是访问关系数据库的标准语言。困难之处在于:虽然大多数的 DBMS (数据库管理系统)对其基本功能都使用了标准形式的 SQL,但它们却不符合最近为更高级的功能定义的标准 SQL 语法或语义。
例如,并非所有的数据库都支持储存程序或外部连接,那些支持这一功能的数据库又相互不一致。人们希望 SQL 中真正标准的那部份能够进行扩展以包括越来越多的功能。但同时 JDBC API 又必须支持现有的 SQL。
JDBC API 解决这个问题的一种方法是允许将任何查询字符串一直传到所涉及的 DBMS驱动程序上。这意味着应用程序可以使用任意多的 SQL 功能,但它必须冒这样的风险:有可能在某些 DBMS 上出错。
事实上,应用程序查询甚至不一定要是 SQL,或者说它可以是个为特定的 DBMS 设计的 SQL 的专用派生物(例如,文档或图象查询)。
连接 MySQL
格式:mysql -h 主机地址 -u 用户名 -p 用户密码
例1:连接到本机上的MYSQL。
首先在打开 DOS 窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root 是没有密码的,故直接回车即可进入到 MySQL 中了,MySQL 的提示符是:mysql>
例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110110110110,用户名为root,密码为abcd123。则键入以下命令:
mysql -h110110110110 -uroot -pabcd123
参考资料来源:百度百科-jdbc
参考资料来源:百度百科-mySQL
以上就是关于java报错java.lang.NumberFormatException: For input string 求助全部的内容,包括:java报错java.lang.NumberFormatException: For input string 求助、eclipse软件上如何寻找database下的data下的com.文件、一堆数据放在一起可能产生什么问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)