Azure SQL Database是Azure上的数据库PAAS服务,让用户可以快速的创建和使用SQL数据库而不用担心底层的备份,安全,运维,恢复等繁琐的工作,本文简单介绍如何使用Java程序连接到SQL Azure数据库。

  1. 首先登录到你的Azure管理界面,选择创建新的SQL数据库,选择自定义创建:

  2. 输入数据库的名称,运维是第一次创建,所以选择新建SQL数据库服务器,对于不同的服务级别,请参照相关文档:

  3. 输入你的数据库登录名,密码,选择数据库区域,当然你的数据库应该和你的应用程序在一个于以获得较好的性能,较低的延迟;对于版本来讲,我们选择v12版本,新版本中有很多特性,选择确定,数据库即开始创建:

  4. 数据库创建完成,点击数据库名称"myjavatestdb"进入仪表板,在"速览"显示了你目前可用的选项,包括显示连接的字符串,你允许访问的IP地址,获取数据库管理工具等信息:

    显示连接字符串,会显示目前主要语言的连接信息,点击链接你会看到:

  5. 基于默认的数据库安全设计,初始情况下,SQL Azure数据库不允许任何IP地址来连接和访问数据库,只有你主动设置了允许的IP地址,才能连接数据库,所以你需要了解到你的哪个服务器会连接数据库,然后点击"管理允许的IP地址"将需要进行数据库连接的IP地址设置进去才可以访问:

  6. 上述配置完成后,打开Eclipse,假设你已经安装了最新的Azure plugin for Eclipse插件,(如果你不知道如何安装,请参考我的博客安装Eclipse并设置Azure插件:http://cloudapps.blog.51cto.com/3136598/1699880),新建Java项目azurelab:

  7. 要连接到SQLServer,我们必须要添加SQL Server的JDBC driver,在Azure for Eclipse的插件中,实际已经包含了最新的驱动,在创建新项目的下一步,选择Libraries,然后在下一步中,选择Add Library:

    在对话框中,选择Microsoft JDBC driver 4.2 for SQL Server:

    请注意,网上看到一些报告说使用4.0,4.1驱动连接v12数据库,即使选择不适用安全连接,也会出现强制使用SSL并报不被信任错误等问题,所以请大家连接v12数据库尽量选择4.2版本的驱动。成功添加驱动库后如下如所示:

  8. 在上述设置完成后,连接SQL Azure database主要有两种连接方式,一种是通过SSL加密的安全连接方式,一种是非加密的连接方式,那么这两种连接方式都在什么场景下使用比较合适呢?

    如果你需要连接SQL Azure数据库的虚拟机和你的数据库都在Azure上,并且在一个地区(region),那么建议你使用非加密方式具有更好的性能;如果你的应用程序要透过互联网,比如从你的数据中心连接,那么建议你使用SSL的方式连接。

  9. 使用非加密方式访问数据库,首先需要设置白名单如#5所示,然后使用如下代码进行非安全连接:

package com.azurelabs.china.sqlserver;

import java.sql.*;

import com.microsoft.sqlserver.jdbc.*;

public class ConnectSQL {

public static void main(String[] args) {

// TODO Auto-generated method stub

String connectionString =

"jdbc:sqlserver://YOURSERVER.database.chinacloudapi.cn:1433;"

+ "database=YOURDB;"

+ "user=YOURUSER;"

+ "password=YOURPASS;"

+ "loginTimeout=30;";

……

}

10. 使用安全方式访问数据库,需要打开encrypt=true,设置trustServerCertificate 为true 等参数,如下代码所示:

package com.azurelabs.china.sqlserver;

import java.sql.*;

import com.microsoft.sqlserver.jdbc.*;

public class ConnectSQL {

public static void main(String[] args) {

// TODO Auto-generated method stub

String connectionString =

"jdbc:sqlserver://YOURSERVER.database.chinacloudapi.cn:1433;"

+ "database=YOURDB;"

+ "user=YOURUSER;"

+ "password=YOURPASS;"

+ "encrypt=true;"

+ "trustServerCertificate=true;"

+ "hostNameInCertificate=*.database.chinacloudapi.cn;"

+ "loginTimeout=30;";

……

}

其他的程序写法没什么差别,例如查询一个数据库表:

Connection connection = null;

Statement statement = null;

ResultSet resultSet = null;

PreparedStatement prepsInsertPerson = null;

PreparedStatement prepsUpdateAge = null;

try {

connection = DriverManager.getConnection(connectionString);

// SELECT rows from the table.

String selectSQL="select id,name,age from dbo.testcon";

statement = connection.createStatement();

resultSet = statement.executeQuery(selectSQL);

// Iterate through the result set and print the attributes.

while (resultSet.next()) {

System.out.println(resultSet.getString(1) + " "

+ resultSet.getString(2)+ " "

+ resultSet.getString(3));

}

}

catch (Exception e) {

e.printStackTrace();

}

finally {

// Close the connections after the data has been handled.

if (prepsInsertPerson != null) try { prepsInsertPerson.close(); } catch(Exception e) {}

if (prepsUpdateAge != null) try { prepsUpdateAge.close(); } catch(Exception e) {}

if (resultSet != null) try { resultSet.close(); } catch(Exception e) {}

if (statement != null) try { statement.close(); } catch(Exception e) {}

if (connection != null) try { connection.close(); } catch(Exception e) {}

}

}

Java连接Azure SQL Database的更多相关文章

  1. pymssql连接Azure SQL Database

    使用pymssql访问Azure SQL Database时遇到"DB-Lib error message 20002, severity 9:\nAdaptive Server conne ...

  2. 用SSMS连接Azure Sql Database 与连接本地库的一些操作区别

    背景 我们知道Azure Sql Database 可以降低运维成本.是一种Pass模式,有资源弹性设置,可以自由调整资源自动对应不同业务高峰(当然也可以降低费用成本),也方便项目后期的资源扩展,以及 ...

  3. 【数据库-Azure SQL Database】JDBC 如何连接 SQL Azure 数据库

    使用 JAVA 代码连接 Azure SQL Database 时产生了 SSL 错误,对于此问题大多数用户都是因为不知如何编写 JDBC 连接字符串而产生的,以下为相关示例代码,供您参考:   pa ...

  4. [转]Azure 表存储和 Windows Azure SQL Database - 比较与对照

    本文转自:https://msdn.microsoft.com/library/azure/jj553018 更新时间: 2014年10月 作者:Valery Mizonov 和 Seth Manhe ...

  5. Azure SQL Database (24) 使用新管理界面,创建跨数据中心标准地域复制(Standard Geo-Replication)

    <Windows Azure Platform 系列文章目录> 文本是对:SQL Azure (17) SQL Azure V12 - 跨数据中心标准地域复制(Standard Geo-R ...

  6. 使用SQL Database Migration Wizard把SQL Server 2008迁移到Windows Azure SQL Database

    本篇体验使用SQL Database Migration Wizard(SQLAzureMW)将SQL Server 2008数据库迁移到 Azure SQL Database.当然,SQLAzure ...

  7. Azure Sql Database为某个数据库创建单独的访问账户

    由于SQL Management Studio对Azure SQL Database支持不完美,不能使用图形界面,因此配置数据库就会有不同的麻烦,下面是本人配置访问账户的一些经验: 1.以管理员登陆之 ...

  8. Azure SQL Database (19) Stretch Database 概览

    <Windows Azure Platform 系列文章目录>  Azure SQL Database (19) Stretch Database 概览      Azure SQL Da ...

  9. Azure SQL Database (20) 使用SQL Server 2016 Upgrade Advisor

    <Windows Azure Platform 系列文章目录>  Azure SQL Database (19) Stretch Database 概览      Azure SQL Da ...

随机推荐

  1. DOM和jQuery

    一.DOM 在学习DOM之前你应该已经具备了以下三个知识点的应用:HTML CSS javascript DOM 是 W3C(万维网联盟)的标准. W3C DOM 标准被分为 3 个不同的部分: 核心 ...

  2. npm install Error:EPROTO: protocol error, symlink '../mime/cli.js' -> '/vagrant/src/nodejs/node_modules/express/node_modules/send/node_modules/.bin/mime'

    我在ubuntu上使用npm安装依赖是出现下面错误: npm ERR! Linux 3.13.0-101-genericnpm ERR! argv "/usr/bin/nodejs" ...

  3. Linux系统维护修复模式

    基于PXE方式的Linux系统维护工具箱     在安装RedHat Linux系统的过程中,我们知道可以通过PXE方式进行安装,从而解决了无光驱或无安装介质(光盘)来安装操作系统.但是当系统由于某种 ...

  4. 锁sql server锁

    锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏 ...

  5. HDOJ2553-N皇后问题(DFS)

      N皇后问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  6. Extjs实现进度条

    做Extjs开发中,往往后台程序可能要执行一段时间才能得到返回结果,加入进度条可以提高客户体验度,以下为两种便捷的方式: 1.提交数据前用Ext.Msg.wait('提示','正在处理数据,请稍候') ...

  7. 单调队列-hdu-4193-Non-negative Partial Sums

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4193 题目大意: 给n个数,a0,a1,...an,求ai,ai+1,...an,a1,a2,... ...

  8. Codevs1992题解

    题目大意 求有向图中经过某一点k的最大环(数据规模不支持floyd). 题解 以k为起点在正向图中spfa求单源最短路.再在反向图中spfa求单源最短路. 枚举除k外的每个点i.假设有一个同一时候包括 ...

  9. sql 随机数

    select FLOOR(rand()*16) 就是随机得到0到15之间的一个整数 select CEILING(rand()*15) 就是随机得到1到15之间的一个整数 FLOOR()为地板函数,取 ...

  10. Splash界面布局与代码实现(一)

    xml界面布局代码: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns ...