通过Statement
/**
*
* @author Administrator
*接口Statement
* 所有已知子接口:
* CallableStatement, PreparedStatement (一般使用这个)
* 对象由Connection.createStatement()创建
public class Insert {
public static void main(String[] args) {
new Insert();
}
Insert(){
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;database=student", "sa","123");
Statement st = conn.createStatement();
st.execute("insert into t_student(id,name,sex,face,courtyard,classs,dorm,tel) values('16','6','6','6','6','6','6','213e')");
System.out.println("插入成功");
st.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
通过PreparedStatement
/**
*
* @author Administrator
*PreparedStatement接口 表示预编译的 SQL 语句的对象
* 比Statement的好处
* 1、相对比较安全,可以防止sql注入
* 2、有预编译功能,相同操作批量数据效率较高
public class Insert {
public static void main(String[] args) {
new Insert();
}
Insert(){
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;database=student", "sa","123");
PreparedStatement pre = conn.prepareStatement("insert into t_student(id,name,sex,face,courtyard,classs,dorm,tel) values(?,?,?,?,?,?,?,?)");
pre.setString(1, "lisi");
pre.setString(2, "12");
//也可以使用setObject方法,避免判断参数的麻烦
pre.setObject(3, "32");
pre.setObject(4, "32");
pre.setObject(5, "32");
pre.setObject(6, "32");
pre.setObject(7, "32");
pre.setObject(8, "32");
System.out.println("插入成功");
pre.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用Statement插入20000条记录,不使用PreparedStatement因为预处理消耗较大
/**
* @author Administrator
*批量处理, 一次性插入大量数据
*1 关闭自动提交模式 conn.setAutoCommit(false);
*2 通过st.addBatch()将给定的 SQL 命令添加到此 Statement 对象的当前命令列表中。
* 还要 通过调用方法 executeBatch 批量执行此列表中的命令。
*3 提交 conn.commit();
*/
public class Insert {
public static void main(String[] args) {
new Insert();
}
Insert(){
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;database=student", "sa","123");
Statement st = conn.createStatement();
conn.setAutoCommit(false);
for (int i=0; i<20000; i++){
st.addBatch("insert into t_student(id,name,sex,face,courtyard,classs,dorm,tel) values('"+i+"','姓名','8','9','6','6','6','213e')");
System.out.println(i);
}
st.executeBatch();
conn.commit();
ResultSet re = st.executeQuery("select * from t_student");
while(re.next()){
System.out.println(re.getString(1));
}
System.out.println("插入成功");
st.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}