java 向数据库插入数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 向数据库插入数据相关的知识,希望对你有一定的参考价值。
数据是这样获得的一个数组 str[i] = nd.getNodeValue().trim()。怎样才能依次插入数据库呢。这里用的是SQL Server数据库
怎么个顺便法?这个str[i]数组是从xml中解析出来的数据。要写进sql server中去。
java向数据库中插入数据,可以使用mysql数据库,使用statement类来操作数据库,示例如下:
Connection conn = null;Statement st = null;
try
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加载驱动类
conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://<server_name>:<1433>", "name","pwd");
conn.setAutoCommit(false);
st = conn.createStatement();
// 模拟一个 str[i] = nd.getNodeValue().trim()
String[] str = new String[] "aaa", "bbb", "ccc", "ddd", "eee","fff" ;
String sqlStr = null;
for (int i = 0; i < str.length; i++)
sqlStr = "INSERT INTO <TABLENAME> (<COLNAME>)VALUES(\'" + str[i] + "\')";//向数据库中插入数据
st.executeUpdate(sqlStr);
conn.commit();
catch (Exception e)
e.printStackTrace();
finally //释放数据库的资源
try
if (st != null)
st.close();
if(conn != null && !conn.isClosed())
conn.close();
catch (SQLException e)
e.printStackTrace();
参考技术A 你的问题的确表达不太清楚,我根据你的意思模拟了一个,供你参考一下:
Connection conn = null;
Statement st = null;
try
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://<server_name>:<1433>", "name","pwd");
conn.setAutoCommit(false);
st = conn.createStatement();
// 模拟一个 str[i] = nd.getNodeValue().trim()
String[] str = new String[] "aaa", "bbb", "ccc", "ddd", "eee","fff" ;
String sqlStr = null;
for (int i = 0; i < str.length; i++)
sqlStr = "INSERT INTO <TABLENAME> (<COLNAME>)VALUES('" + str[i] + "')";
st.executeUpdate(sqlStr);
conn.commit();
catch (Exception e)
e.printStackTrace();
finally
try
if (st != null)
st.close();
if(conn != null && !conn.isClosed())
conn.close();
catch (SQLException e)
e.printStackTrace();
本回答被提问者采纳 参考技术B 对呀,就是循环插入 参考技术C 你在str[i]取得值的时候,顺便也写入数据库不就行了吗?
说实话,你的问题好像表达得不是很清楚 参考技术D 很复杂
java向数据库批量插入数据
话不多说,代码附上。
// 配置文件获取数据库信息 @Value("${spring.datasource.url}") private String url; @Value("${spring.datasource.driver-class-name}") private String driver; @Value("${spring.datasource.username}") private String user; @Value("${spring.datasource.password}") private String password;
public void batcheInsert(List<Map<String,Object>>listMap, String tableName){ try { String sql = ""; String sqlStr1 = "INSERT INTO "+tableName+" ("; String sqlStr2= ") VALUES ("; String sqlStr3 = ")"; String sqlKey = ""; String sqlValue = ""; for (Object key: listMap.get(0).keySet() ) { sqlKey+= key + ","; sqlValue += "?,"; } sqlKey = sqlKey.substring(0,sqlKey.length() -1); sqlValue = sqlValue.substring(0,sqlValue.length() -1); sql = sqlStr1 + sqlKey + sqlStr2 + sqlValue + sqlStr3; logger.info("拼接的insert into SQL:" + sql); Connection conn = getConnection(); conn.setAutoCommit(false); //构造预处理statement PreparedStatement pst = conn.prepareStatement(sql); int count = 0; int index = 1; for(int i = 1;i <= listMap.size();i++){ for (Object val: listMap.get(i-1).values() ) { pst.setString((index++),nullToNull(val)); } index = 1; pst.addBatch(); //每10000次提交一次 if(i % 10000 == 0){//可以设置不同的大小; ++count; pst.executeBatch(); conn.commit(); pst.clearBatch(); } } // 最后插入不足1w条的数据 pst.executeBatch(); conn.commit(); logger.info("批次提交次数:" + ++count); pst.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } }
public Connection getConnection() {//建立返回值为Connectiong的方法 Connection con = null;//声明Connection对象 try {//加载数据库驱动类 Class.forName(driver); System.out.println("数据库驱动加载成功"); } catch (ClassNotFoundException e) { e.printStackTrace(); } try {//通过访问数据库的URL获取数据库连接对象 con = DriverManager.getConnection(url, user, password); System.out.println("数据库连接成功"); } catch (SQLException e) { e.printStackTrace(); } return con;//按方法要求返回一个Connectiong对象 }
以上是关于java 向数据库插入数据的主要内容,如果未能解决你的问题,请参考以下文章
用java做前台 向数据库插入数据是 怎么判断有木有插入进数据库 ?