首先明确一下,你的空指针是在哪报的错,你写的sql语句,本身也是被预编译后,放mysql执行的,
如果你selectt 方式去读取的,那么可以通过getRow或者是遍历的方式去计数,如果selectt count方式的话,可以直接通过getInt方式去读取,你上边说报了空指针,那你自己可以加一个端点进行调试
import javaio;
import javatextSimpleDateFormat;
import javautil;
import javasql;
import javautilDate;
import javautilHashMap;
import javautilMap;
import jxl;
public class SimUpdate {
private String fileName;
public ZfzSimUpdate(String fileName){
thisfileName = fileName;
}
static Map tNames;
static{
tNames = new HashMap();
}
/
用于产生 数据库的 ID 值,组成 [年月日时分秒(100-999)] 总共 17 位数
根据不同的表名,可保证同一秒内产生的 ID 号不重复
/
private static String getDtime() {
String rid;
Date nd = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
rid = sdfformat(nd);
return rid;
}
public String getSeqNumber(String tableName) {
if(tableName == null || ""equals(tableName))
tableName = "GENERY";
Integer it;
// noinspection SynchronizeOnNonFinalField
synchronized(tNames){
it = (Integer)tNamesget(tableName);
if(it == null){
it = new Integer(100);
tNamesput(tableName, it);
}else{
if(itintValue() > 998)
it = new Integer(100);
else
it = new Integer(1 + itintValue());
tNamesput(tableName, it);
}
}
return getDtime() + StringvalueOf(it);
}
private void updateDb(){
try{
Connection conn = DbPoolconnectDB();
if(conn != null){
Statement stmt = conncreateStatement();
jxlWorkbook rwb = null;
try{
//构建Workbook对象 只读Workbook对象
//直接从本地文件创建Workbook
//从输入流创建Workbook
InputStream is = new FileInputStream(fileName);
rwb = WorkbookgetWorkbook(is);
//Sheet(术语:工作表)就是Excel表格左下角的Sheet1,Sheet2,Sheet3但在程序中
//Sheet的下标是从0开始的
//获取第一张Sheet表
Sheet rs = rwbgetSheet(0);
//获取Sheet表中所包含的总列数
int rsColumns = rsgetColumns();
//获取Sheet表中所包含的总行数
int rsRows = rsgetRows();
//获取指这下单元格的对象引用
String simNumber = "",termSeqId = "";
//指定SIM卡号及序列号
for(int i=0;i<rsRows;i++){
for(int j=0;j<rsColumns;j++){
Cell cell = rsgetCell(j,i);
if(j==0){
simNumber = cellgetContents();
}
termSeqId = "633"+simNumber;
}
String sql = "查询SQL";
int isOk = stmtexecuteUpdate(sql);
if(isOk == 0 && !simNumberequals("")){
String termId = getSeqNumber("termInf");
String insertSql = "自定义INSERT";
int isAdd = stmtexecuteUpdate(insertSql);
if(isAdd > 0){
Systemoutprintln("成功插入第"+i+"条数据");
}
}
//Systemoutprintln("SIM卡号:"+simNumber+",序列号:"+termSeqId);
}
//以下代码为写入新的EXCEL,这里不使用,所以注释
/
//利用已经创建的Excel工作薄创建新的可写入的Excel工作薄
jxlwriteWritableWorkbook wwb = WorkbookcreateWorkbook(new File("D://Book2xls"),rwb);
//读取第一张工作表
jxlwriteWritableSheet ws = wwbgetSheet(0);
//获取第一个单元格对象
jxlwriteWritableCell wc = wsgetWritableCell(0, 0);
//决断单元格的类型,做出相应的转化
if (wcgetType() == CellTypeLABEL) {
Label l = (Label) wc;
lsetString("The value has been modified");
}
//写入Excel对象
wwbwrite();
wwbclose();
/
}catch(Exception e){
eprintStackTrace();
}
finally{
// *** 作完成时,关闭对象,翻译占用的内存空间
rwbclose();
}
}
}catch(Exception e){
eprintStackTrace();
}
}
public static void main(String args[]){
DbPool dbPool = new DbPool("dbConncfg");//连接数据库
SimUpdate simUpdate = new SimUpdate("zfz_simxls");
simUpdateupdateDb();
}
}
excel有行和列,可以对应数据库表的行和字段。先获取你excel中的数据,如果你的数据是和java中实体对应的话,循环获取每一行数据存放进实体对象中,然后进行数据库保存就好了。
读取excel数据可以使用poi。
这个设计的内容如下:
PoI技术,将表格数据解析存储到数据库
数据显示,jqGrid这些专业的图表数据显示插件可以完成,当然也可以在JSP页面用普通的<table>标签实现
因为我没有转载DB2 所以没有办法帮你写出具体的sql语句,也不能测试我oracle 为例吧
1不管java 连接那个数据库都是一样的
ClassforName(dir);
String url = "";//数据库名,用户名和密码
Connection conn = DriverManagergetConnection(url);
Statement stat = conncreateStatement();
// 执行你想要执行的sql语句下面是查询,修改和删除有点不一样
ResultSet rs = statexecuteQuery(sql);
你可以通过select table_name from user_tables; 这个sql语句查询才出数据库里面所有的表
再通过 select from ALL_TAB_COLS A where lower(ATable_Name) = '表名' 查询出某一个表的相关信息这样是有点繁琐,不过不失为一种解决方法
2 读取数据就更容易了
直接执行select 就可以了
3 帮刚刚读出来的表结构组装成建表语句 create 一下就可以了
4关于数据类型我也不是很清楚,你可以在网上查一查db2有哪些数据类型然后在建表的时候做一下儿转换就可以了
5你说的也就是把刚刚查询出来的数据插入到数据库中insert 就可以了
其实java *** 作数据库很简单的不同于c查询出来后,做适当的组装处理就可以得到你想要的结果
希望对你有帮助
//建立数据库连接类
import javasqlConnection;
import javasqlDriverManager;
import javasqlSQLException;
public class Utilities {
public static Connection getConnection() {
Connection con = null;
try {
ClassforNam("oraclejdbcdriverOracleDriver");
con = DriverManagergetConnection ("jdbc:mysql://localhost:8080/auction", "scott", "tiger");//这里是数据库连接主机的地址数据库端口库名,帐户密码
} catch (SQLException e) {
// TODO Auto-generated catch block
eprintStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
return con;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
然后通过这个连接来提取数据库中的数据 实现业务流程
package auctiondaoimpl;
import javasqlConnection;
import javasqlPreparedStatement;
import javasqlResultSet;
import javasqlSQLException;
import javautilArrayList;
import javautilList;
import auctiondaoAuctionUserDao;
import auctionexceptionAuctionException;
import auctionmodelAuctionUser;
import auctionUtilitiesUtilities;
public class AuctionUserDaoJDBCImpl {
public void delete(AuctionUser user) {
Connection con = null;
PreparedStatement ps = null;
try {
con = UtilitiesgetConnection();
consetAutoCommit(false);
ps = conprepareStatement("delete from auction_user where user_id=");
pssetInt(1, usergetId());
psexecute();
concommit();
} catch (Exception e) {
eprintStackTrace();
try {
conrollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1printStackTrace();
}
} finally {
if(ps != null) {
try {
psclose();
} catch (SQLException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
if(con != null) {
try {
conclose();
} catch (SQLException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
}
}
}
如果需要将数据库中的文件导入到电子表格,我也没做过,我引用一下别人的东西。如下
创建Excel 文档
示例1将演示如何利用Jakarta POI API 创建Excel 文档。
示例1程序如下:
import orgapachepoihssfusermodelHSSFWorkbook;
import orgapachepoihssfusermodelHSSFSheet;
import orgapachepoihssfusermodelHSSFRow;
import orgapachepoihssfusermodelHSSFCell;
import javaioFileOutputStream;
public class CreateXL {
/ Excel 文件要存放的位置,假定在D盘JTest目录下/
public static String outputFile="D:/JTest/ gongyexls";
public static void main(String argv[]){
try{
// 创建新的Excel 工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
// 在Excel工作簿中建一工作表,其名为缺省值
// 如要新建一名为"效益指标"的工作表,其语句为:
// HSSFSheet sheet = workbookcreateSheet("效益指标");
HSSFSheet sheet = workbookcreateSheet();
// 在索引0的位置创建行(最顶端的行)
HSSFRow row = sheetcreateRow((short)0);
//在索引0的位置创建单元格(左上端)
HSSFCell cell = rowcreateCell((short) 0);
// 定义单元格为字符串类型
cellsetCellType(HSSFCellCELL_TYPE_STRING);
// 在单元格中输入一些内容
cellsetCellValue("增加值");
// 新建一输出文件流
FileOutputStream fOut = new FileOutputStream(outputFile);
// 把相应的Excel 工作簿存盘
workbookwrite(fOut);
fOutflush();
// *** 作结束,关闭文件
fOutclose();
Systemoutprintln("文件生成");
}catch(Exception e) {
Systemoutprintln("已运行 xlCreate() : " + e );
}
}
}
读取Excel文档中的数据
示例2将演示如何读取Excel文档中的数据。假定在D盘JTest目录下有一个文件名为gongyexls的Excel文件。
示例2程序如下:
import orgapachepoihssfusermodelHSSFWorkbook;
import orgapachepoihssfusermodelHSSFSheet;
import orgapachepoihssfusermodelHSSFRow;
import orgapachepoihssfusermodelHSSFCell;
import javaioFileInputStream;
public class ReadXL {
/ Excel文件的存放位置。注意是正斜线/
public static String fileToBeRead="D:/JTest/ gongyexls";
public static void main(String argv[]){
try{
// 创建对Excel工作簿文件的引用
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));
// 创建对工作表的引用。
// 本例是按名引用(让我们假定那张表有着缺省名"Sheet1")
HSSFSheet sheet = workbookgetSheet("Sheet1");
// 也可用getSheetAt(int index)按索引引用,
// 在Excel文档中,第一张工作表的缺省索引是0,
// 其语句为:HSSFSheet sheet = workbookgetSheetAt(0);
// 读取左上端单元
HSSFRow row = sheetgetRow(0);
HSSFCell cell = rowgetCell((short)0);
// 输出单元内容,cellgetStringCellValue()就是取所在单元的值
Systemoutprintln("左上端单元是: " + cellgetStringCellValue());
}catch(Exception e) {
Systemoutprintln("已运行xlRead() : " + e );
}
}
}
设置单元格格式
在这里,我们将只介绍一些和格式设置有关的语句,我们假定workbook就是对一个工作簿的引用。在Java中,第一步要做的就是创建和设置字体和单元格的格式,然后再应用这些格式:
1、创建字体,设置其为红色、粗体:
HSSFFont font = workbookcreateFont();
fontsetColor(HSSFFontCOLOR_RED);
fontsetBoldweight(HSSFFontBOLDWEIGHT_BOLD);
2、创建格式
HSSFCellStyle cellStyle= workbookcreateCellStyle();
cellStylesetFont(font);
3、应用格式
HSSFCell cell = rowcreateCell((short) 0);
cellsetCellStyle(cellStyle);
cellsetCellType(HSSFCellCELL_TYPE_STRING);
cellsetCellValue("标题 ");
1、查询SQL中的所有表: Select TABLE_NAME FROM 数据库名称INFORMATION_SCHEMATABLES Where TABLE_TYPE='BASE TABLE' 执行之后,就可以看到数据库中所有属于自己建的表的名称 2、查询SQL中所有表及列: Select dbosysobjectsname as Table_name, dbosyscolumnsname AS Column_name FROM dbosyscolumns INNER JOIN dbosysobjects ON dbosyscolumnsid = dbosysobjectsid Where (dbosysobjectsxtype = 'u') AND (NOT (dbosysobjectsname LIKE 'dtproperties')) 3、在Sql查询分析器,还有一个简单的查询方法: EXEC sp_MSforeachtable @command1="sp_spaceused ''" 执行完之后,就可以看到数据库中所有用户表的信息 4、查询总存储过程数:select count() 总存储过程数 from sysobjects where xtype='p' 附:xtype类型D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束L = 日志FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程S = 系统表TF = 表函数
TR = 触发器U = 用户表UQ = UNIQUE 约束(类型是 K)V = 视图X = 扩展存储过程 另:在sqlserver中取得某个数据库中所有表名的sql语句 select sysobjectsname from sysobjectsxtype ='U';SELECT name
WHERE (xtype = 'U') 在数据库的sysobjects表里有这个数据库全部表的信息, xtype值为'U'的就是表名 注意:一般通过上述方法获得全部用户表示都会有一个dtproperties表,SQLSERVER 默认它也是用户表,想要从用户表中排出,需要加上限定条件 status>0,即:select from sysobjects where xtype='U' and status>0
以上就是关于java 如何获取 mysql数据库中表格的总记录数全部的内容,包括:java 如何获取 mysql数据库中表格的总记录数、如何用java实现将execl表格导入到数据库中、java怎么将excel表格数据导入数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)