java插入数据到MYSQL数据库问题

java插入数据到MYSQL数据库问题,第1张

觉得你没调用stmtexecuteUpdate();这句吧,你可以改成我下面的形式试试。在这之前你得确认连接上数据库了吗?如果你打印con取到了值(或者单步调式看con取到了值)。然后将insert into employee(id,name,sex,born,nation,minzu,zhengzhi,marry,school,zhiwei,tel,address) values ('"+snumber+"','"+sname+"','"+ssex+"','"+sbir+"','"+shometown+"','"+snation+"','"+sstatus+"','"+smarrage+"','"+seducation+"','"+sposition+"','"+smobile+"','"+saddress+"')");

改成insert into employee(id,name,sex,born,nation,minzu,zhengzhi,marry,school,zhiwei,tel,address) values (?,?,?,?,?,?,?,?,?,?,?,?)");

然后这样子做:

stmtsetString(1,值);

stmtsetString(2,值);

直至塞完你要插入的值,如果是int的,里面也有stmtsetInt(3,值);

还有float的就有stmtsetFloat(4,值);总之,你想赛什么样的值它都有方法的。

然后你再调用stmtexecuteUpdate();就OK了

都给你说了没调用stmtexecuteUpdate();

怎么不去试试调用stmtexecuteUpdate();呢,调了后没有再找我!

参考下面方法:

import javaioFileInputStream;­

import javaioFileNotFoundException;­

import javaioIOException;­

import orgapachecommonsloggingLog;­

import orgapachecommonsloggingLogFactory;­

import orgapachepoihssfusermodelHSSFCell;­

import orgapachepoihssfusermodelHSSFRow;­

import orgapachepoihssfusermodelHSSFSheet;­

import orgapachepoihssfusermodelHSSFWorkbook;­

public class TestExcel {­

//记录类的输出信息­

static Log log = LogFactorygetLog(TestExcelclass); ­

//获取Excel文档的路径­

public static String filePath = "D://excelxls";­

public static void main(String[] args) {­

try {­

// 创建对Excel工作簿文件的引用­

HSSFWorkbook wookbook = new HSSFWorkbook(new FileInputStream(filePath));­

// 在Excel文档中,第一张工作表的缺省索引是0

// 其语句为:HSSFSheet sheet = workbookgetSheetAt(0);­

HSSFSheet sheet = wookbookgetSheet("Sheet1");­

//获取到Excel文件中的所有行数­

int rows = sheetgetPhysicalNumberOfRows();

//遍历行­

for (int i = 0; i < rows; i++) {­

// 读取左上端单元格­

HSSFRow row = sheetgetRow(i);­

// 行不为空­

if (row != null) {­

//获取到Excel文件中的所有的列­

int cells = rowgetPhysicalNumberOfCells();­

String value = ""; ­

//遍历列­

for (int j = 0; j < cells; j++) {­

//获取到列的值­

HSSFCell cell = rowgetCell(j);­

if (cell != null) {­

switch (cellgetCellType()) {­

case HSSFCellCELL_TYPE_FORMULA:­

break;­

case HSSFCellCELL_TYPE_NUMERIC:­

value += cellgetNumericCellValue() + ","; ­

break; ­

case HSSFCellCELL_TYPE_STRING:­

value += cellgetStringCellValue() + ",";­

break;­

default:­

value += "0";­

break;­

}

// 将数据插入到mysql数据库中­

String[] val = valuesplit(",");­

TestEntity entity = new TestEntity();­

entitysetNum1(val[0]);­

entitysetNum2(val[1]);­

entitysetNum3(val[2]);­

entitysetNum4(val[3]);­

entitysetNum5(val[4]);­

entitysetNum6(val[5]);­

TestMethod method = new TestMethod();­

methodAdd(entity);­

} catch (FileNotFoundException e) {­

eprintStackTrace();­

} catch (IOException e) {­

eprintStackTrace();­

读取Excel的第三方工具一般可以用jxl或者poi。jxl比较轻量,poi功能更强大一点。如果数据量较小,推荐jxl,百万级的推荐poi。

从我代码中取出来的一部分,你自己参考下吧。

流程就是:

1、创建workbook对象

2、读取sheet

3、读取行,循环行读取列值

4、将列值拼装成insert语句

5、执行sql

其中要注意的几个问题是:列值合法验证,sql语句过长问题(mysql支持的一条sql不能超过1M好像,这个可以配置的)。列值验证好说,sql语句过长可以循环固定行数分批次执行。整个东西不难,你可以在网上搜索到相关资料。

public void scanXlsx(String path) throws IOException {

loginfo("进入Xlsx扫描方法,扫描路径为:{}", path);

// 初始化文件输入流

InputStream is = new FileInputStream(path);

// 初始化workbook对象

XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);

// 定义XLSX行对象

XSSFRow xssfRow;

// 定义XLSX sheet对象

XSSFSheet xssfSheet;

// 获得sheet数目

int sheet_sum = xssfWorkbookgetNumberOfSheets();

loginfo("该excel共有<" + sheet_sum + ">个工作簿!");

// 初始化读取记录行数,跳过表头,默认开始就读取一行

rows_index = 1;

/

循环遍历每个工作簿

/

for (int numSheet = 0; numSheet < sheet_sum; numSheet++) {

logdebug("进入循环读页,当前页为Sheet{}", numSheet + 1);

// 初始化sheet对象

xssfSheet = xssfWorkbookgetSheetAt(numSheet);

// 判断sheet所在页内容是否为空

if (xssfSheet == null) {

continue;

}

// 获得第numSheet个工作表的总行数

rows_sum = xssfSheetgetPhysicalNumberOfRows() - 1;

/

如果工作簿的总行数为0或1,那么就跳出本次循环,继续下一个工作簿

/

if (rows_sum <= 1) {

logdebug("该sheet无有效数据");

continue;

}

// 一次批量插入100条,计算循环次数

int loops = 1;

if (rows_sum % 100 == 0) {

loops = rows_sum / 100;

} else {

loops = rows_sum / 100 + 1;

}

logdebug("循环次数:{}", loops);

// 初始化每个numSheet的成功行数

rows_success = 0;

loginfo("第<" + numSheet + ">个工作簿共<" + rows_sum + ">行!");

int m = 0;// 结束条数

int j = 0;// 起始条数

int s = 0;// 起始条数

for (int h = 0; h < loops; h++) {

j = h 100 + 1;// 开始条数

s = j;

m = (h + 1) 100 + 1;// 计算结束条数

if (m > rows_sum) {

m = rows_sum;

}

loginfo("文件第<" + h + ">次从<" + j + ">行开始读取,读取到<" + m + ">行结束");

// 循环遍历每个sheet的行

out: for (; j < m; j++) {

// 获得行对象

xssfRow = xssfSheetgetRow(j);

/

遍历每列的值

/

for (int i = 0; i < 13; i++) {

// 获得列值

value = ScanUtilsgetValue(xssfRowgetCell(i));

switch (i) {

/

第一列:

/

case 0:

break;

/

第二列:

/

case 1:

break;

。。。

default:

break;

}

}

// 增加一条读取记录

++rows_index;

}

}

}

isclose();

}

以上就是关于java插入数据到MYSQL数据库问题全部的内容,包括:java插入数据到MYSQL数据库问题、用java怎么将excel表格数据导入到mysql数据库中、怎么用java程序把excel导入到mysql数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10070026.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存