Java学习之连接sqlserver数据库

      数据库有很多,嵌入式里面用my-sql多一点,是开源软件。最近看一本书用的sqlserver,就暂且拿sqlserver学习一下,其他的都大致一样。

      1、运行sqlserver

    用于学习,构建小型的数据库,在网上找了一个绿色版的sqlserver,网址为:http://www.downcc.com/soft/22534.html。

在运行的时候,win7下要以管理员身份运行,不然打不开报错。这个工具的说明里面说可以集成到exe里面打包,开机启动这个程序就可以,以后做程序用到了再说。这里首先启动如下图:

如上图,运行成功。下面框里有ip和端口号,用于连接数据库时使用。

2、新建数据库和表

    先安装sqlser的企业管理器,用于新建一个数据库,并建立数据库中的表

点击工具页签,找到企业管理器后,先点击注册com组件。然后双击企业管理器。

 点击新建数据库,然后新建一个表

如上图,新建的数据名字为song,点击表,新建表

如上图,新建表填入列名,数据类型等信息,表名字为tb_stu

然后编辑表,如下图

然后可以添加在图形界面添加一些数据

这样数据库的操作就完了。

3、java连接数据库

首先java连接所有的数据库通过JDBC的接口,一般数据库厂商会提供一种JDBC接口的实现,我们这里用的是sqlserver的一个java包:jtds-1.2.2.jar,可以在网上下载个。

新建一个java项目后,除了新建java源文件,还要添加上这个jtds的包。添加方法为:

右击要导入jar包的项目工程,点击properties,如下图java build path-》libraries -》add External jars 选择中包应用就可以了。

完成后工程的效果如下:

JDBC的全称是Java DataBase Connectiviry,是一套面向对象的应用程序接口,指定了统一的访问各种关系型数据库的标准接口。JDBC是一种底层的API,因此访问数据库时需要在业务逻辑层中嵌入SQL语句。SQL语句是面向关系的,依赖于关系模型,所以通过JDBC技术访问数据库也是面向关系的。JDBC技术主要完成以下几个任务:

与数据库建立一个连接。

向数据库发送SQL语句。

处理从数据库返回的结果。

 

JDBC的常用类和接口:

1Connection接口  用于建立连接,找到数据库

JDBC并不能直接访问数据库,必须依赖于数据库厂商提供的JDBC驱动程序。这里用的就是jtds。

            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            con = DriverManager.getConnection(
                    "jdbc:jtds:sqlserver://localhost:7788/" + "song","sa", "admin");

jdbc:jtds:sqlserver://localhost:7788/ 是数据库的地址,这里用的jtds的api就用这个形式的,由于是本地用改下端口号7788,然后数据库的名字是song,用户名是sa,默认的密码是admin。

2 Statement接口  用于声明要执行的数据库语句

Statement stmt = con.createStatement();

stmt.executeUpdate("delete from tb_stu where id = "
                    + "(select min(id)from tb_stu)");

上面的例子是声明一个Statement接口,并执行一条数据库语句。

3 PreparedStatement接口  预处理的sql语句

static PreparedStatement sql; // 声明PreparedStatement对象

sql = con.prepareStatement("select * from tb_stu"); // 查询数据库

4DriverManager类 用来管理数据库中的所有驱动程序

Class.forName() 显式地加载 JDBC 驱动程序

DriverManager.getConnection();建立连接

5 ResultSet接口 类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集
            res = sql.executeQuery(); // 执行SQL语句

如上面所示,res为结果集,然后就可以输出结果集。

以上简单对java连接数据库进行了研究,如果要做相关项目,以exet的形式提供给客户使用。用到打包sqlservr等还需要再深入研究,这里仅供学习参考。

下面示例中有数据库的增删改查,供参考:

import java.sql.*;

public class Renewal { // 创建类
	static Connection con; // 声明Connection对象
	static PreparedStatement sql; // 声明PreparedStatement对象
	static ResultSet res; // 声明ResultSet对象
	
	public Connection getConnection() {
		try {
			Class.forName("net.sourceforge.jtds.jdbc.Driver");
			con = DriverManager.getConnection(
					"jdbc:jtds:sqlserver://localhost:7788/" + "song",
					"sa", "admin");
		} catch (Exception e) {
			e.printStackTrace();
		}
		return con;
	}
	
	public static void main(String[] args) {
		Renewal c = new Renewal(); // 创建本类对象
		con = c.getConnection(); // 调用连接数据库方法
		try {
			//查询数据
			sql = con.prepareStatement("select * from tb_stu"); // 查询数据库
			res = sql.executeQuery(); // 执行SQL语句
			System.out.println("执行增加、修改、删除前数据:");
			while (res.next()) {
				String id = res.getString(1);
				String name = res.getString("name");
				String sex = res.getString("sex");
				String birthday = res.getString("birthday"); // 遍历查询结果集
				System.out.print("编号:" + id);
				System.out.print(" 姓名:" + name);
				System.out.print(" 性别:" + sex);
				System.out.println(" 生日:" + birthday);
			}
			//插入数据
			sql = con.prepareStatement("insert into tb_stu values(?,?,?,?)");
			sql.setString(1, "1");
			sql.setString(2, "张一"); // 预处理添加数据
			sql.setString(3, "女");
			sql.setString(4, "2012-12-1");
			sql.executeUpdate();
			
			//修改数据
			sql = con.prepareStatement("update tb_stu set birthday "
					+ "= ? where id = (select min(id) from tb_stu)");
			sql.setString(1, "2012-12-02"); // 更新数据
			sql.executeUpdate();
			
			//删除数据
			Statement stmt = con.createStatement();
			stmt.executeUpdate("delete from tb_stu where id = "
					+ "(select min(id)from tb_stu)");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值