数据库有很多,嵌入式里面用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的常用类和接口:
1、Connection接口 用于建立连接,找到数据库
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"); // 查询数据库
4、DriverManager类 用来管理数据库中的所有驱动程序
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();
}
}
}