
觉得你没调用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数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)