zoukankan      html  css  js  c++  java
  • java连接SQL Server数据库

    操作系统:windows 7 64位

    java开发环境:eclipse SDK

    数据库:SQL Server 2008 R2

    下载jdbc驱动包

    下载地址,我下载的是exe版本的,其实是格自解压包。下载完毕之后,双击运行,会解压在当前目录下。

          Microsoft SQL Server JDBC Driver 3.0\sqljdbc_3.0\chs\auth\x64\sqljdbc_auth.dll文件 复制到C:\Windows\SysWOW64目录下。(64bit系统)

          Microsoft SQL Server JDBC Driver 3.0\sqljdbc_3.0\chs\auth\x86\sqljdbc_auth.dll 文件 复制到 C:\Windows\System32 (32位系统,未经过验证)

     然后将  Microsoft SQL Server JDBC Driver 3.0\sqljdbc_3.0\chs\sqljdbc4/jar 包导入到项目中。

    源代码

     1 import java.sql.*;
     2 public class Conn{
     3     public static void main(String[] args) {
     4       String JDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
     5 //SQL数据库引擎
     6       String connectDB="jdbc:sqlserver://ABYSS-PC\\MYABYSS:64160;DatabaseName=master";
     7 //数据源  !!!!注意若出现加载或者连接数据库失败一般是这里出现问题
     8      // 我将在下面详述
     9       try {
    10     //加载数据库引擎,返回给定字符串名的类
    11           Class.forName(JDriver);
    12       }catch(ClassNotFoundException e)
    13       {
    14        //e.printStackTrace();
    15           System.out.println("加载数据库引擎失败");
    16           System.exit(0);
    17       }     
    18       System.out.println("数据库驱动成功");
    19       
    20       try {
    21           String user="sa";                                    
    22    //这里只要注意用户名密码不要写错即可
    23           String password="*liluotinghua33*";
    24           Connection con=DriverManager.getConnection(connectDB,user,password);
    25 //连接数据库对象
    26           System.out.println("连接数据库成功");
    27           Statement stmt=con.createStatement();
    28 //创建SQL命令对象
    29        
    30        //创建表
    31            System.out.println("开始创建表");
    32           //创建表SQL语句
    33            String query= "create table TABLE1(ID   
    34                                  NCHAR(2),NAME NCHAR(10))";
    35            stmt.executeUpdate(query);//执行SQL命令对象
    36            System.out.println("表创建成功");
    37               
    38            //输入数据
    39            System.out.println("开始插入数据");
    40            String a1="INSERT INTO TABLE1 VALUES('1','旭哥')";
    41                 //插入数据SQL语句
    42            String a2="INSERT INTO TABLE1 VALUES('2','伟哥')";
    43            String a3="INSERT INTO TABLE1 VALUES('3','张哥')";
    44            stmt.executeUpdate(a1);//执行SQL命令对象
    45            stmt.executeUpdate(a2);   
    46            stmt.executeUpdate(a3);
    47            System.out.println("插入数据成功");
    48            
    49            //读取数据
    50            System.out.println("开始读取数据");
    51            ResultSet rs=stmt.executeQuery("SELECT * FROM 
    52                  TABLE1");//返回SQL语句查询结果集(集合)
    53        //循环输出每一条记录
    54        while(rs.next()){
    55         //输出每个字段
    56      System.out.println(rs.getString("ID")+"\t"+rs.getString("NAME"));
    57        }
    58        System.out.println("读取完毕");
    59        
    60        //关闭连接
    61        stmt.close();//关闭命令对象连接
    62        con.close();//关闭数据库连接
    63       }catch(SQLException e){
    64        e.printStackTrace();
    65        System.out.print(e.getErrorCode());
    66        //System.out.println("数据库连接错误");
    67        System.exit(0);
    68       }
    69  }
    70 }    

    出现的问题

     String connectDB="jdbc:sqlserver://ABYSS-PC\\MYABYSS:64160;DatabaseName=master";

    先讲解一下这段代码。

     其中ABYSS-PC\\MYABYSS 表示服务器名字,两个反斜杠表示转义。什么是服务器的名字呢,如下图:



    64160 表示端口号,一般情况下默认的是1433,特殊情况下如我的便是随机分配的。

    验证端口号:

    1、打开任务管理器,选择服务,查看SQL Server实例的 PID号为7284,我的电脑运行了两个数据库实例,我只连接第一个实例。


    2、打开命令提示符。输入 netstat -ano。 7284所对应的端口号是64160.


    DatabaseName=master;  master表示数据源。如图。



    在运行还出现一个问题就是,用windows身份验证可以登录数据库,但是使用SQL Server身份验证却提示失败。
    一般出现错误会报告错误代码,我这里报告的错误代码是18456 。你可以用谷歌搜索一下: SQL Server 2008 错误代码 18456.
    这里我简单的提供一下解决办法。
    首先windows帐号是可以登录的。

    查找问题的过程:
    第一步: 启动所有与SQL有关的服务,问题依旧;
    第二步: 查看windows防火墙,被默认启动了,不启动选择项被Disabled。两个提示“由于安全考虑,某些设置由组策略控制”“Windows防火墙正在使用您的域设置”,先用gpedit.msc打组策略编辑器,机算机配置--管理模板--网络--网络连接--Windows防火墙--标准配置文件,查看右边各选项属性,都是未配置状态,问题不在这里。
    第三步:用windows帐号登录,连接成功后,右击实例,选择属性->安全性。确定“服务器身份验证”选择的是“SQL Server和Windows身份验证模式”
    通过这三个步骤,问题就差不多解决了。
    还以一点,别忘了给sa用户登录权限。
    双击sa帐号


    选择状态。



  • 相关阅读:
    Python语言之并发编程
    python语言之系统工具
    python语言之正则
    python语言之字符串与字节
    Python语言之持久化
    Python语言之数字格式化与时间
    Python语言之异常处理与测试
    Java-AQS源码详解(细节很多!)
    redis的主从复制原理
    Amdahl定律和可伸缩性
  • 原文地址:https://www.cnblogs.com/freeabyss/p/3187065.html
Copyright © 2011-2022 走看看