Java連載136-兩種方式插入數據

1、插入數據

  • 對於數據的增刪改查都有兩種可選的操做模式,一種是直接使用SQL語句進行增刪改查,另外一種是經過可更新的結果集對象間接增刪改查。首先建立語句對象
Statement stmt = con.creatStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CUNCUR_UPDATABEL);
  • 一下插入數據的兩種方式:
string sqlins = "INSERT INO students values(' " + name +" ','" +age + "','" + sex + "','" +wage + "','" +" ','" + addr + " ')";
  • 第二種方式
rs.moveToInsertRow();
rs.updateString("name","LiMing");
rs.updateInt("age",40);
rs.updateString("sex","男");
rs.updateInt("wage",4500);
rs.updateString("addr","北京市");
rs.insetRow();
package com.bjpowernode.java_learning;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class D136_1_InsertSQL {
	private static final String URL = "jdbc:Access:///e:xsgl.mdb";
	static {
		try {
			Class.forName("com.hxtt,sql.access.AccessDriver");
		}catch(ClassNotFoundException e) {
			e.printStackTrace();//輸出捕獲到的異常信息
		}
	}
	
	public static void main(String[] args) {
		try {
			Connection conn = DriverManager.getConnection(URL);
			Statement statement = conn.createStatement();
			String sql = "insert into studentInfo(studentID,studentName) values (201701,'老陳')";
			statement.executeUpdate(sql);
			statement.close();
			conn.close();
			System.out.println("數據更新成功");
		}catch(SQLException e) {
			e.printStackTrace();
		}
	}

}
  • 當須要批量添加數據的時候。咱們一般使用PreparedStatement實例或者CallableStatement實例來完成。
package com.bjpowernode.java_learning;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class D136_2_PreparedStatementInsert {
	private static final String URL = "jdbc:Access:///e:/xsgl.mdb";
	static {
		try {
			Class.forName("com.hxtt,sql.access.AccessDriver");
		}catch(ClassNotFoundException e) {
			e.printStackTrace();//輸出捕獲到的異常信息
		}
	}
	public static void main(String[] args) {
		try {
			Connection conn = DriverManager.getConnection(URL);
			String[][] records = {{"201702","老張"},{"201703","Tony"}};
			String sql = "insert into studentInfo(studentID,studentName values(?,?)";//定義動態INSERT語句
			PreparedStatement prpdStmt = conn.prepareStatement(sql);//預處理動態INSERT語句
			for(int i=0;i<records.length;i++) {
				prpdStmt.setInt(1, Integer.valueOf(records[i][0]).intValue());  //爲參數賦值
				prpdStmt.setString(2, records[i][1]);    //爲參數賦值
				prpdStmt.addBatch();   //將INSERT語句添加到Batch中
			}
			prpdStmt.executeBatch();    //批量執行Batch中的Insert語句
			prpdStmt.close();
			conn.close();
		}catch(SQLException e) {
			e.printStackTrace();
		}
	}

}
  • 要特別注意在爲動態SQL語句中的參數賦值的時候,參數的索引值是從1開始的,而不是從0開始的。另外要爲動態SQL語句中的每個參數賦值,不然在提交將會拋出「錯誤的參數綁定」異常。當經過PreparedStatement實例和CallableStatement實例添加單條記錄的時候,在設置完參數後,也須要調用executeUpdate()方法,這是才真正執行INSERT語句向數據庫中添加記錄。

2、源碼:

相關文章
相關標籤/搜索