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中怎么向数据库插入数据 ?

用java做前台 向数据库插入数据是 怎么判断有木有插入进数据库 ?

Java中写插入语句向数据库中的表插入??

Java中写插入语句向数据库中的表插入??

java向Word模板中替换书签数据,插入图片,插入复选框,插入Word中表格的行数据,删除表格行数据

用java向mysql数据库中插入数据为空