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. 使用PHP从web访问mysql数据库

    一. web数据库构架的工作原理 1. 用户由浏览器发出HTTP请求,请求特定的web页面. 2. web服务器接受接收到对特定页面的请求,检索相应文件,并将其传递给php引擎处理. 3. php引擎 ...

  2. Effective Java设定游戏 - 就是爱Java

    首先,我们先设定游戏,一个网页游戏的基本场景,主角拥有各种能力,但一开始数值都只有系统初始,随着故事的发展,会接触到各种不同的场景,获得提升角色的道具与装备,来参与更高难度的任务. 阅读全文>& ...

  3. 将QT开发的界面程序封装成DLL,在VC中成功调用

    最近手头的一个项目需要做一个QT界面,并且封装成DLL,然后再动态调用DLL给出的接口函数,使封装在DLL内部的QT界面跑起来,在网上查了很多资料,今天终于成功了,经验不敢独享,因为CSDN给了我很多 ...

  4. TextReader/TextWriter 的类

    TextReader以及TextWriter这两个类,非常有用,很多方法都接受它们作为参数. TextReader有两个子类: StringReader/StringWriter 用于读取字符串: S ...

  5. cf472B Design Tutorial: Learn from Life

    B. Design Tutorial: Learn from Life time limit per test 1 second memory limit per test 256 megabytes ...

  6. 【转】C++ STL 相关的问题集合

    3.C++ STL中vector的相关问题:    (1).调用push_back时,其内部的内存分配是如何进行的?    (2).调用clear时,内部是如何具体实现的?若想将其内存释放,该如何操作 ...

  7. HOWTO Use Python in the web — Python v3.0.1 documentation

    HOWTO Use Python in the web - Python v3.0.1 documentation mod_python¶ People coming from PHP often f ...

  8. http的无状态无连接到底是什么含义

    无连接:服务器处理完客户的请求,并收到客户的应答后,即断开连接. 早期这么做的原因是 HTTP协议产生于互联网,因此服务器需要处理同时面向全世界数十万.上百万客户端的网页访问,但每个客户端(即浏览器) ...

  9. BarTender打印出来的条码与设计的不同如何处理

    今日有用户在使用BarTender设计打印条码时发现自己设计出来的条码与打印显示的条码有不一样的地方,也就是BarTender模板上的条码有显示警戒栏,但打印的条码警戒栏却没了,这一问题要如何解决呢? ...

  10. OpenCV MFC 模块间通信

    1. 新建MFC项目 点击完成. 2. 添加按钮 在"工具箱"中找到"Button"控件,添加至界面:  2. 配置opencv, 添加colordetecto ...