Java连接Azure SQL Database

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) {}

}

}

时间: 2024-10-20 16:39:09

Java连接Azure SQL Database的相关文章

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

背景 我们知道Azure Sql Database 可以降低运维成本.是一种Pass模式,有资源弹性设置,可以自由调整资源自动对应不同业务高峰(当然也可以降低费用成本),也方便项目后期的资源扩展,以及一些其他优点或特性,这就不一一列出.那么数据库开发工程师来说,操作Azure Sql Database 与我们使用的SSMS(Microsoft Sql Server Management Studio)在本地库上操作有哪些区别. 我们简单从如下几部分进行比较 1.创建对象比较:(简单列一下Azur

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

本文转自:https://msdn.microsoft.com/library/azure/jj553018 更新时间: 2014年10月 作者:Valery Mizonov 和 Seth Manheim 审阅者:Brad Calder.Jai Haridas.Paolo Salvatori.Silvano Coriani.Prem Mehra.Rick Negrin.Stuart Ozer.Michael Thomassy.Ewan Fairweather 本主题比较  支持的两种结构化存储类

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

本篇体验使用SQL Database Migration Wizard(SQLAzureMW)将SQL Server 2008数据库迁移到 Azure SQL Database.当然,SQLAzureMV还可以把SQL Server 2005/2012/2014迁移到Azure SQL Database. SQLAzureMV有几个版本:1.SQLAzureMW v3x 适用于 .NET Framework 3.5 和 SQL Server 2008 R2 SP1 2.SQLAzureMW v4

How to: Configure an Azure SQL Database firewall using the Azure Portal

突然想写博客 , 毕竟早上一直打不开Azure的官方文档 , 想找个中文也没有 , 原文英文链接 : How to: Configure an Azure SQL Database firewall using the Azure Portal 一年没有更新博客 , 毕竟变成大四狗了 , 这次解决问题如下 , 我在Azure上面新建了SQL数据库 , 连接的时候报错 .  回到Azure门户看到有解决文章: 找到你的门户上面的数据库 点击 工具 → 在 Visual Studio 中打开 → 配

通过SSMS工具迁移本地的SQL Server Database到Windows Azure SQL Database

微软的产品更新越来越快了,几乎每年都有产品更新,今天呢,我们主要介绍一下,如何将本地的SQL Server数据库迁移到windows azure上的SQL Server Database.当然说到SQL Serrver数据库的迁移,大家都会想到最普通及最普遍的方法,那就是通过备份数据库,然后通过备份的数据库文件进行还原.其实呢,我们在IT运维的工作中多少会有体会,最普通的方法往往是最有效的方法也是最安全的方法,但是效率不高,由于时代进步的太快了,我们也不能太out了,也不想用这个古老的方法去做数

Azure sql database 监控存储过程的传参情况

背景 实施开发的同事找到我,反馈说项目中使用Azure sql database 之后,无法使用Profiler来监控自己开发的存储过程的参数传参情况.确实profiler这些实例级别的工具在Azure sql database下是不支持的,那我们有没有办法,变相实现监控参数情况,特写一篇博客记录一下. 测试环境 Microsoft SQL Azure (RTM) - 12.0.2000.8 Mar 30 2017 01:30:03 Copyright (C) 2016 Microsoft Co

Azure SQL Database (22) Azure SQL Database支持中文值

<Windows Azure Platform 系列文章目录> 在笔者之前的文章里,已经介绍了如何使Azure SQL Database支持中文: SQL Azure(七) 在SQL Azure Database中执行的T-SQL 其中的关键步骤是: 1.使用默认的字符集:SQL_LATIN1_GENERAL_CP1_CI_AS 2.显示中文的字段列,类型必须为NVARCHAR 3.插入中文字符时,在字符串前面加上一个大写字母N 但是在有些时候,把所有的T-SQL语句在字符串前面加上一个大写字

Azure SQL Database (1) 用户手册

<Windows Azure Platform 系列文章目录> 下载地址:Azure SQL Database用户手册

How to Use Lucene.NET with Windows Azure SQL Database

http://social.technet.microsoft.com/wiki/contents/articles/2367.how-to-use-lucene-net-with-windows-azure-sql-database.aspx How to Use Lucene.NET with Windows Azure SQL Database Table of Contents Summary Lucene.NET The Azure Library for Lucene.NET Usi