从Azure Table Storage中取数据

2022-04-24 00:00:00 数据 专区 字符串 接口 提取

从Azure Table Storage中取数据

正文开始有几条特别的事项:

需要使用的jar包: azure-storage-3.0.0.jar 在 http://download.csdn.net/detail/u012364631/9045427
Azure Table Storage中有两列:PartitionKey和RowKey,这两列是必须要有的,我们Bean类必须继承com.microsoft.azure.storage.table.TableServiceEntity,这个父类中有这两个属性。PartitionKey的等级比RowKey要大(可以把前者看做较高层的分类,后者是次级的分类),这两个的组合用来确定一条数据。
要想取得数据,Bean类必须继承com.microsoft.azure.storage.table.TableServiceEntity,且要有一个设置PartitionKey和RowKey的构造函数,如下图:


 

项目都需要批量提取数据,但由于Azure提供的接口只有一个“提取含有给定PartitionKey数据的”的接口,所以如果有提取一个表中全部数据的需求,我们只能把所有数据的PartitionKey设置成相同的,把RowKey作为主键。
由于我们的TableStorage中的列名只能为小写格式,所以Bean中所有的getter和setter 方法名需要为小写格式,如getname()而不是getName(),否则无法取到数据。(若Azure Table Storage中的列名为首字母大写,则getter和setter必须使用首字母大写如getName)Ps:这应该是Azure的Bug

正文开始

我把Azure提供的几个接口包装成了测试类:AzureTableStorageUtil,

所以具体使用方法请看它的JavaDoc。(Azure提供了许多接口,但是我们目前只需要从Table Storage中取数据,增加、修改数据的接口我们暂时用不到。)

另外,批量插入数据的方法insertBatchEntities() 暂时有点问题,我们可以使用单词上传的方法addEntityToTable()

正文结束

关于如何将取出来的数据存储到Azure的MySQL中,则非常简单,只需在代码中设置好数据库的连接字符串,在我的测试代码中的DBHelper类中有,详细配置步骤请看《Azure中的WEB项目与Azure的MySQL连接》。
关于如何存入Azure的SQLServer:
查看连接字符串在数据库的界面点击“查看 ADO .Net、ODBC、PHP 和 JDBC 的 SQL 数据库连接字符串”


将你的字符串在程序中设置好,比如:

conn= DriverManager.getConnection("jdbc:sqlserver://******.database.windows.net:1433;database=******;user=******@*****;password=********;encrypt=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;");

数据库驱动类(需要导入sqldjdbc4-4.0.jar,在 http://download.csdn.net/detail/u012364631/9048717 ):

String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";

另外
1. 插入数据的SQL语句与MySQL有不同
SQLServer: INSERT into my_table(id,name) values(1,’g’);

MYSql: INSERT into my_table(id,name) value(1,’g’);

2. boolean b = stmt.execute(); 如果执行成功将返回false

相关文章