JDBC中的SQL

在JDBC中使用SQL几个固定的步骤:

(1)加载驱动,Class.forName(driverClass)每个数据库的驱动都有所不同,例如:MySQL的driverClass是com.mysql.jdbc.Driver。并且需要将mysql-connector-java.jar文件加载到项目中。

(2)获取数据库连接。DriverManager.getConnection(String url,String user,String pass)

三个参数分别为:数据库url,用户名,密码。其中的url每个数据库也有其固定格式。例如:MySQL的url:jdbc:mysql://hostname:port/databasename 。用户名默认为root,密码是自己设置的。我的是qh911119.

(3)为了能够执行SQL语句,必须产生一个Statement对象。

(4)Statement对象能够通过一下三种方法执行SQL语句:executeQuery(),executeUpdate(),execute()

下面对三种方法做个介绍:

ResultSet executeQuery(String sql):该方法用于查询语句,把查询的结果放在ResultSet的对象中,ResultSet有许多处理数据的方法。

int executeUpdate(String sql):该方法用于执行DML语言(insert,update,delete),返回影响的行数,也可执行DDL(create,drop,alter,truncate),返回0

boolean execute(String sql):可以执行任何SQL语句。如果执行的后产生的第一个结果为ResultSet对象,则返回true;否则返回false.

(5)下面是一个简单的程序,包括了上面的三种方法的使用。程序中getConnection()中的参数是采用配置文件写到程序中的,这样更具有灵活性。

配置文件:mysql.ini

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test1
user=root
pass=qh911119

executeDDL.java

import java.util.Properties;
import java.io.FileInputStream;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
public class ExecuteDLL 
{
	private String driver;
	private String url;
	private String user;
	private String pass;
	private Connection conn;
	private Statement stmt;
	private ResultSet rs;

	public void initParam(String paramFile) throws Exception{
		Properties props=new Properties();
		props.load(new FileInputStream(paramFile));
		driver=props.getProperty("driver");
		url=props.getProperty("url");
		user=props.getProperty("user");
		pass=props.getProperty("pass");
	}
	public void createTable(String sql) throws Exception{
		try{
			Class.forName(driver);
			conn=DriverManager.getConnection(url,user,pass);
			stmt=conn.createStatement();
			stmt.executeUpdate(sql);
		}
		finally{
			if(stmt!=null){stmt.close();}
			if(conn!=null){conn.close();}

		}
	}
	public int insertData(String sql) throws Exception{
		try{
			Class.forName(driver);
			conn=DriverManager.getConnection(url,user,pass);
			stmt=conn.createStatement();
			return stmt.executeUpdate(sql);
		}
		finally{
			if(stmt!=null){stmt.close();}
			if(conn!=null){conn.close();}

		}
	}
	<pre class="java" name="code">	public void executeSql(String sql) throws Exception{
		try{
			Class.forName(driver);
			conn=DriverManager.getConnection(url,user,pass);
			stmt=conn.createStatement();
			boolean hasResultSet=stmt.execute(sql);
			//执行后有ResultSet结果集
			if(hasResultSet){
				//获取结果集
				rs=stmt.getResultSet();
				//ResultSetMetaData是用于分析结果集的数据接口
				ResultSetMetaData rsmd=rs.getMetaData();
				int columnCount=rsmd.getColumnCount();
				while(rs.next()){
					for(int i=0;i<columnCount;i++){
						System.out.print(rs.getString(i+1)+"\t");
					}
					System.out.println();
				}
			}
			else{
				System.out.println("该SQL语句影响的记录有"+stmt.getUpdateCount());
			}
		}
		finally{
			if(rs!=null){rs.close();}
			if(stmt!=null){stmt.close();}
			if(conn!=null){conn.close();}

		}
	}
	public static void main(String[] args) throws Exception
	{
		ExecuteDLL ed=new ExecuteDLL();
		ed.initParam("mysql.ini");
		//SQL语句,在test1数据库中新建一个名为jdbc_test的表
//		ed.createTable("create table jdbc_test"+
		//"(jdbc_id int auto_increment primary key,"+
//						"jdbc_name varchar(255),"+"jdbc_desc text);");
		//插入记录
//		int result=ed.insertData("insert into jdbc_test(jdbc_name)"+
//			"select s.student_name from student_table s,teacher_table t "+
//			"where s.student_id=t.java_teacher;");
	
		System.out.println("delete tables");
		ed.executeSql("drop table if exists my_test");
		System.out.println("create tables");
		ed.executeSql("create table my_test"+
		"(test_id int auto_increment primary key,"+
					"test_name varchar(255))");
		System.out.println("insert dat  a");
		//select 和from语句之间不能用+,
		//例如"select s.student_name"+"from student_table s"将引发一个错误
		ed.executeSql("insert into my_test(test_name)"+
		"select s.student_name from student_table s;");
		System.out.println("get data");
		ed.executeSql("select*from my_test");
	}
}


 



























  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值