JAVA 访问数据库问题

市面上数据库种类繁多,JAVA访问的方式也有所不同。

 

1、利用数据源

 

    在本地建一个数据源,指向远程或是本地的数据库,这种方法比较方便,适用于各种数据库,SQL Server,Access等,使用方法如下:开始 - 控制面板 - 管理工具 - 数据源 - 系统 DSN(Data source Name)- 添加 - 选 SQL Server - 填入名称(这里写上mydatabase),选择相应的服务器,后续按提示操作即可。

 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;

 
public class TestDSN {
    public static void main(String[] args) {
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection con = DriverManager.getConnection(
"jdbc:odbc:mydatabase", "sa", "pa");
            String sql = "SELECT * From id_mac_rssi";
            ResultSet rs = con.createStatement().executeQuery(sql);
            while (rs.next()) {
                System.out.println("id:" + rs.getString(1) + " mac:"

+ rs.getString(2) + " rssi:" + rs.getString(3));
            }

            rs.close();

            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

 

 

     这种方式相当于把连接数据库的工作交给“数据源”,JAVA 只和“数据源”打交道。优点是通用性好,不需要改变JAVA代码,而且可以访问 Access 这样的没有进程守护的数据库文件,JAVA标准库里包含了相关的库,不需额外添加。缺点是要手动设置或者代码实现添加数据源,一般来说用户希望得到软件后直接就可以用,而不希望做过多的设置。

 

2、直接访问远程数据库

 

      这种方式要求远程数据库有进程守护,Oracle,SQL Server,MySql都没问题,但是Access 就不行,它只是一个文件而已。 

  • 访问 SQL Server 方式:

      SQL Server 的访问并不轻松,需要下载支持的包,版本不同,支持的包也有差异。这里使用 SQL Server 2005 ,添加用户 leidiqiu ,密码 888888。到微软的网站下载支持的包 sqljdbc.jar 和 sqljdbc4.jar 并添加到环境变量。

 

package com.ldq;

import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class Test04 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			String sql = "INSERT INTO img(c_id,c_img) VALUES(?,?)";
			Connection con = DriverManager
					.getConnection("jdbc:sqlserver://127.0.0.1:1433;databasename=mydatabase;user=leidiqiu;password=888888");
			PreparedStatement ps = con.prepareStatement(sql);

			FileInputStream fis = new FileInputStream("img.png");
			ps.setInt(1, 1003);// 对应第一个 ? 号
			ps.setBinaryStream(2, fis, fis.available());// 对应第二个 ? 号
			int rst = ps.executeUpdate();
			System.out.println(rst);// 数据是否插入成功

			fis.close();
			ps.close();
			con.close();

		} catch (Exception e) {
			e.printStackTrace();
			// TODO: handle exception
		}
	}
}

 

 

      img.png 文件放在工程目录下,数据库表的设计为 c_id int,c_img img ,img的数据类型其实就是字节流存储的图片,在用 SELECT * FROM img 查看 img 部分是16进制的内容,和用 WinHex 打开 img.png 的内容一致。0x424D36.....

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值