数据库连接代码(模板,不含主方法)

  protected static String dbClassName = "com.mysql.jdbc.Driver";// MySQL数据库驱动类的名称
  protected static String dbUrl = "jdbc:mysql://127.0.0.1:3306/db_database28?useUnicode=true&characterEncoding=utf8";// 访问     MySQL数据库的路径
   protected static String dbUser = "root";// 访问MySQL数据库的用户名
   protected static String dbPwd = "123456";// 访问MySQL数据库的密码
   protected static String dbName = "db_database28";// 访问MySQL数据库中的实例(db_database28是我创建的数据库名称)
   protected static String second = null;//
   public static Connection conn = null;// MySQL数据库的连接对象

    static {// 静态初始化Dao类
        try {
            if (conn == null) {
                Class.forName(dbClassName).newInstance();// 实例化MySQL数据库的驱动
                conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);// 连接MySQL数据库
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();//打印输出错误内容
            JOptionPane.showMessageDialog(null, "请将MySQL的JDBC驱动包复制到lib文件夹中。");// 捕获异常后,弹出提示框
            System.exit(-1);// 系统停止运行
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

1.?useUnicode=true&characterEncoding=utf8是用来解决数据库中数据出现的乱码问题

2.使用静态块的原因是,只需要在第一次访问数据库时加载一次

3.System.exit(-1)和return的区别,System.exit(-1)是指所有程序(方法,类等)停止,系统停止运行。
return只是这一个方法停止,并不影响其他方法的顺序运行。比如:
void a(){
b();
c();
d();
}其中b()中是return.c()是System.exit(-1);那么
b()会执行,c()会执行,而d()不会被执行

4.ClassNotFoundException是个异常处理类,要是你程序中类加载错误的话,就会抛出异常

常见原因:
1 所需要的支持类库放错了地方,并没有放在类路径里面
2 使用了重复的类库,且版本不一致。导致低版本的被优先使用。
3 类名错了,一般是使用Class.forName的时候,手工指定了类名的情况。
4* 没有导入纯JAVA驱动包

5.newInstance()方法和new的区别,newInstance实际上是把new这个方式分解为两步,即,首先调用class的加载方法加载某个类,然后实例化。我们可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了我们降耦的手段。

[补充:]
newInstance: 弱类型。低效率。只能调用无参构造。
new: 强类型。相对高效。能调用任何public构造。
newInstance()是实现IOC、反射、面对接口编程 和 依赖倒置 等技术方法的必然选择,new 只能实现具体类的实例化,不适合于接口编程。

 

 

代码分为两部分:第一部分通过java.lang包的静态方法forName()来加载jdbc驱动程序,如果加载失败会抛出ClassNotFoundException异常。

第二部分通过java.sql包中的类DriverManager的静态方法getConnection(url,user,password);建立数据库连接。如果连接失败,抛出Exception异常。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值