全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
表格存储

单行数据操作

更新时间:2017-06-07 13:26:11

表格存储的 SDK 提供了 PutRow、GetRow、UpdateRow 和 DeleteRow 等单行操作的接口。

插入一行数据(PutRow)

插入数据到指定的行。

接口

  1. /**
  2. * 向表(Table)中插入或覆盖一行数据。
  3. *
  4. * @param putRowRequest 执行PutRow操作所需参数的封装。
  5. * @return PutRow 操作的响应内容。
  6. * @throws OTSException OTS访问返回错误消息
  7. * @throws ClientException 请求的返回结果无效, 或由于网络原因请求失败, 或访问超时。
  8. */
  9. public PutRowResult putRow(PutRowRequest putRowRequest)
  10. throws OTSException, ClientException;

示例 1

插入一行数据

  1. // 定义行的主键,必须与创建表时的TableMeta中定义的一致
  2. RowPrimaryKey primaryKey = new RowPrimaryKey();
  3. primaryKey.addPrimaryKeyColumn("pk0", PrimaryKeyValue.fromLong(1));
  4. primaryKey.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromLong(101));
  5. RowPutChange rowChange = new RowPutChange("SampleTable");
  6. rowChange.setPrimaryKey(primaryKey);
  7. // 定义要写入改行的属性列
  8. rowChange.addAttributeColumn("col0", ColumnValue.fromLong(10));
  9. rowChange.addAttributeColumn("col1", ColumnValue.fromLong(111111));
  10. rowChange.addAttributeColumn("col2", ColumnValue.fromString("北上杭深"));
  11. // RowExistenceExpectation.EXPECT_NOT_EXIST表示只有此行不存在时才会执行插入
  12. rowChange.setCondition(new Condition(RowExistenceExpectation.EXPECT_NOT_EXIST));
  13. try
  14. {
  15. // 构造插入数据的请求对象,
  16. PutRowRequest request = new PutRowRequest();
  17. request.setRowChange(rowChange);
  18. // 调用PutRow接口插入数据
  19. client.PutRow(request);
  20. // 如果没有抛出异常,则说明执行成功
  21. System.out.println("Put row succeeded.");
  22. } catch (ClientException ex) {
  23. System.out.println("Put row failed.");
  24. } catch (OTSException ex) {
  25. System.out.println("Put row failed.");
  26. }

提示:

  • RowExistenceExpectation.IGNORE 表示不管此行是否已经存在,都会插入新数据,如果之前有会被覆盖。

  • RowExistenceExpectation.EXPECT_EXIST 表示只有此行存在时,才会插入新数据,此时,原有数据也会被覆盖。

  • RowExistenceExpectation.EXPECT_NOT_EXIST 表示只有此行不存在时,才会插入数据,否则不执行。

  • 详细代码:PutRow@GitHub

示例 2

根据条件插入一行数据:当行存在,且 col0 小于 5,且 col2 不等于“beijing”的时候才执行插入操作。

  1. // 定义行的主键,必须与创建表时的TableMeta中定义的一致
  2. RowPrimaryKey primaryKey = new RowPrimaryKey();
  3. primaryKey.addPrimaryKeyColumn("pk0", PrimaryKeyValue.fromLong(1));
  4. primaryKey.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromLong(101));
  5. RowPutChange rowChange = new RowPutChange("SampleTable");
  6. rowChange.setPrimaryKey(primaryKey);
  7. // 定义要写入改行的属性列
  8. rowChange.addAttributeColumn("col0", ColumnValue.fromLong(10));
  9. rowChange.addAttributeColumn("col1", ColumnValue.fromLong(111111));
  10. rowChange.addAttributeColumn("col2", ColumnValue.fromString("北上杭深"));
  11. try
  12. {
  13. //条件1:col0的值小于5
  14. ColumnCondition filter1 = new RelationalCondition(
  15. "col0",
  16. RelationalCondition.CompareOperator.LESS_THAN,
  17. ColumnValue.fromLong(5));
  18. //条件2:col2不等于beijing的行
  19. ColumnCondition filter2 = new RelationalCondition(
  20. "col2",
  21. RelationalCondition.CompareOperator.NOT_EQUAL,
  22. ColumnValue.fromString("beijing"));
  23. // 组合条件1和条件2,关系是AND
  24. ColumnCondition cond = new CompositeCondition(CompositeCondition.LogicOperator.AND)
  25. .addCondition(filter1).addCondition(filter2);
  26. // RowExistenceExpectation.EXPECT_NOT_EXIST表示只有此行不存在时才会执行后面逻辑,否则直接返回
  27. Condition condition = new Condition(RowExistenceExpectation.EXPECT_NOT_EXIST);
  28. // 设置列条件,只有col0小于5且col2不等于beijing的时候才会插入
  29. condition.setColumnCondition(cond);
  30. // 设置条件
  31. rowChange.setCondition(cond);
  32. // 构造插入数据的请求对象
  33. PutRowRequest request = new PutRowRequest();
  34. request.setRowChange(rowChange);
  35. // 调用PutRow接口插入数据
  36. client.PutRow(request);
  37. // 如果没有抛出异常,则说明执行成功
  38. System.out.println("Put row succeeded.");
  39. } catch (ClientException ex) {
  40. // 如果抛出客户端异常,则说明参数等有误
  41. System.out.println("Put row failed.");
  42. } catch (OTSException ex) {
  43. // 如果抛出服务器端异常,则说明请求失败
  44. System.out.println("Put row failed.");
  45. }

读取一行数据(GetRow)

根据给定的主键读取单行数据。

接口

  1. /**
  2. * 返回表(Table)中的一行数据。
  3. *
  4. * @param getRowRequest 执行GetRow操作所需参数的封装。
  5. * @return GetRow操作的响应内容。
  6. * @throws OTSException OTS访问返回错误消息
  7. * @throws ClientException 请求的返回结果无效, 或由于网络原因请求失败, 或访问超时。
  8. */
  9. public GetRowResult getRow(GetRowRequest getRowRequest)
  10. throws OTSException, ClientException;

示例 1

读取一行数据。

  1. // 定义行的主键,必须与创建表时的TableMeta中定义的一致
  2. RowPrimaryKey primaryKeys = new RowPrimaryKey();
  3. primaryKeys.addPrimaryKeyColumn("pk0", PrimaryKeyValue.fromLong(1));
  4. primaryKeys.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromLong(101));
  5. SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("SampleTable");
  6. criteria.setPrimaryKey(primaryKeys);
  7. try
  8. {
  9. // 构造查询请求对象,这里未指定读哪列,默认读整行
  10. GetRowRequest request = new GetRowRequest();
  11. request.setRowQueryCriteria(criteria);
  12. // 调用GetRow接口查询数据
  13. GetRowResult result = client.getRow(request);
  14. // 输出此行的数据
  15. Row row = result.getRow();
  16. int consumedReadCU = result.getConsumedCapacity().getCapacityUnit().getReadCapacityUnit();
  17. System.out.println("Consumed capacity unti:" + consumedReadCU);
  18. System.out.println("col0:" + row.getColumns().get("col0"));
  19. System.out.println("col1:" + row.getColumns().get("col1"));
  20. System.out.println("col2:" + row.getColumns().get("col2"));
  21. // 如果没有抛出异常,则说明成功
  22. System.out.println("Get row succeeded.");
  23. } catch (ClientException ex) {
  24. // 如果抛出客户端异常,则说明参数等有误
  25. System.out.println("Get row failed.");
  26. } catch (OTSException ex) {
  27. // 如果抛出服务器端异常,则说明请求失败
  28. System.out.println("Get row failed.");
  29. }

提示:

  • 查询一行数据时,默认返回这一行所有列的数据,如果想只返回特定行,可以通过 criteria.addColumnsToGet 接口限;("Put row failed.");

  • < 大ass=24 p:javspan">

    "s="typ">p:tan>序/sp"pn> las进 cl

    );n="L cln">

    PutRow@GitHub。

示例 2

根据条件插入一行数据:当行存在,且 col0 小于 5,且 col2 不等于“beijing”的时候才执行插入操作【las 下s="演EXPet 接p/src/tests"pol pa"p

  • // 定义行的主键,必须与创建表时的TableMeta中定义的一致
  • RowPrimaryKey primaryKeys = new RowPrimaryKey();
  • primaryKeylas">.out. class="str">"col0"PrimaryKeyValue.fromLong(1));
  • primaryKeys.addPrimaryKeyColumn("pk1", PrimaryKeyValue."pks="typ">System));
  • rowChange RowPutChange rowChange = new
  • s="typ">SingleRowQueryCriteria("SampleTable");
  • criteria. 输出此行的数据"col0"<"L7">
  • try
  • {
  • out.
  • (RelationalCondition(
  • "col0",out.printlnSystem<回特定an class="p>

    查询一行数据时,默认返回这一行class=""pln">printlnNOT_EQUAL,

  • ColumnValue.println));
  • rowChangean cllass="pun">.=>ColumnConchengdu cl所有刿回特定an class="ppan>
  • (RelationalCondition(
  • "col2",= resultSystem<回特定an class="pln">out.NOT_EQUAL,
  • ColumnValue. ));
  • getColumns.out. pan class="typ">ColumnCondition"col0"<"L7F="typ所有eption
  • getRow) )"col0" "col0"( <);
  • lass="pun">.= n class="pln"> GetRowRequest request
  • throws/spans="typ">GetRowRequest();
  • request.setRowQueryCriteria= result class="str">"col0"
  • //ln">out s="typ">GetRowResult result <败
  • getRow(request);
  • Lln">out

    查询一行数据时,默认返回这一行clas所有eption sw row (();

  • int consumedReadCU =getConsumedCapacity().getCapacityUnit().getReadCapacityUnit();
  • System.("col0:" + row.);
  • System./spanclass="所有eption("col0:" + row.getColumns().get("col0"));
  • System.= result("col0:" + row.getColumns().get("col2"));
  • getColumns.out n>System.("col0:" + row.getColumns.out) {
  • // 如果抛出客户端异常,则说明参数等>

    查询一行数据时,默认返回这一行clas所有eption n>System.("col0:" + row.} catchspan class="pun">=) {

  • // 如果抛出服务器端异常,则说明请求 输出此行的数据 n>System./spanclass="所有eption("col0:" + row.} catchpun">= resultupdaUpda

    Upda
    1. /**
    2. * 返回表(Tablecla所有eption
    3. * spa"> eptiva"> ln">out
    4. * @throws OTSExcepticlaUpda
    5. * @throws ClientExcepticlaon 请求的返回结果无效, 或由于网络原因请求失败, 或访问超时。
    6. 败li= p p:n"> eptiva"> pan>
    7. = resultGetRowRequest throwsan cl所有刿回特定an class="pln">outClientException;

    示例 1

    读取一u793Au4F8B">reference-link">er-link octi"s octi"s-link"> // 定义行的主键,必须与创建表时的TableMeta中定义的一致

  • RowPrimaryKey primaryan class="p败
  • getRow .setPrimaryKeyoutgetRow."col0"PrimaryKeyValue.fromLong(1));
  • primaryKeys.addPrimaryKeyColumn< 如果没有抛出异常,eption"col0"PrimaryKeyValue.System));
  • rowChange RowPutspan class="pun">="col0"
  • try n义要写-改 cls cl所有刿回特定an class="ppun">= result"col0"Atts=buteli> getColumns));
  • rowChange< //ln">out"col0"Atts=buteli> "h3--1">));
  • getColumns//
  • n除"p-java">out"col0" System."col0"( getRow( "col0"< //span class="pun">=<对象,这里未指定读哪pun">= result n classspa cls "> out所有eptionGetRowRequest();
  • requesUpda所有eption. class="str">"col0" <.out s="typUpda);
  • <所有eption.= n>System.out.println("Get row succeeded.");
  • <所有eptiongetColumns.OTSException ex) {
  • // 如果抛出客户端异常,则说明参数等pun">= result n>out("col0:" + row.} catch OTSException ex) {
  • // 如果抛出服务器端异常,则说明请求失败
  • n>System.out("col0:" + row.} catch>

    查询一行数据时,默认返回这一行所有eptionOTSExc回特定行,可以通过 criteria.addColumnsToGespa口限;

    PutRow@GitHub

  • 示例 2

    2 id="h2--deletes-">DeleteRssss="he

    1. /**
    2. * 返回表(Tablesss所有eption
    3. * 删除">
    4. Tableass 口限; eptiva"> ln">out
    5. ss n DeleteRss GetRow操作的响应内容。
    6. * @throws OTSExDeleteRss s OTS访问返回错误消息
    7. * @throws ClientExon 请求的返回结果无效, 或由于网络原因请求失败, 或访问超时。
    8. spa无效ass p由ass网络原因"> 败li= p p:n"> eptiva"> pan>
    9. = resultan>GetRowRequest throwsan cl所有刿回特定an class="pln">outClientException;

  • .reference-link">er-link octi"s octi"s-link"><删除口限; // 定义行的主键,必须与创建表时的TableMeta中定义的一致
  • <要删除s cls PKcl分别丼0 pa100所有刿回特定an class="p败
  • getRow .setPrimaryKeyoutgetRow."col0"PrimaryKeyValue.getColumns));
  • rowChange// 如果没有抛出异常,eption"col0"PrimaryKeyValue.System));
  • rowChange//span class="pun">="col0"
  • try= resultout n clas="lang所有刿回特定an class="p GetRowRequest();
  • requesDeleteRssRoan class="pln"> an cplass="pun">. class="str">"col0" <.out

    查询一行数据时,默认返回这一行sss 所有eption s="typDeleteRssowResul cl删除所有刿回特定an class="p 如果没有抛出异常,eption);

  • lass="pun">.= n>System.("col0:" + row.getColumns.= resultOTSException ex) {
  • // 如果抛出客户端异常,则说明参数等ln">out n> ("col0:" + row.} catch败
  • OTSException ex) {
  • // 如果抛出服务器端异常,则说明请求ln">out n>System.("col0:" + row.} catch 如果没有抛出异常,eptionOTSExc回特定行,可以通过 criteria.addColumnsToG删除口限;

    PutRow@GitHub

  • 示例 2

    re="pmenda sss s divs="pun">re="pmended-"stens=ne="pmended-docs" datitle">相关文档div> uls="pun">list"> sss s

    a href="/document_detail/31718.html" title="n clclass= ">n clclass= sss s

    a href="/document_detail/31716.html" title="">< ">">< sss s

    a href="/document_detail/43013.html" title="单 clclass= ">单 clclass= sss s

    a href="/document_detail/31713.html" title="av<">av< sss s

    a href="/document_detail/31714.html" title="安装">安装 sss s

    a href="/document_detail/31715.html" title="初始化">初始化 sss s ssdivs="pun">ne="pmended-"stens=ne="pmended-products" datitle">相关产品div> uls="pun">list"> sss s

    ">< 存储desan>p< 存储li>Table Store/spn c建/阿里云飞天分布式系统之i s NoSQL class=存储n>">">< 存储li>Table Store/spn c建/阿里云飞天分布式系统之...查看.ja情 s li> sss s

    函cla计算am desan>p通过函cla计算li=您无需管理n>函cla计算会丼您准备好计算资源li=以弹 、可靠s 方式运 clc借助ass函cla计算li=您可以快速n c建任何类型s 应用 pan>spas 是li=您只需要丼代码实际运 clc耗s 资源付费 - 代码未运 cl"不产生费用n">">阿里云函cla计算li=是口个事件驱通过函cla计算li=您...查看.ja情 s li> sss s

    Daclass=工场am desan>pclass=工场Da查看.ja情 s li> sss s
    re="pmenda
    ribbon"m
    < 存储 - 开发lass - SDK 参考 - Java-SDK-Rowerved&url=http://help.aliyun.="p/document_detail/31717.html" title="分享本文档到微博"m s is="pun">s=bbon-btn-i"s dbl-i"s-base-sina"> am s=bbon-btn-i"s dbl-i"s-base-weixin"> am s=bbon-btn-i"s dbl-i"s-base-wujiaoxing"> am s=bbon-btn-i"s dbl-i"s-base-xiazai"> am div> divs="pun">help-ca divs="pun">help-ca help-ca本文导 /s目录div> help-ca

    divs="pun">tooltip_templa divsid="tooltip_"stens" style="width: 130px;height: 130px;"> div> div> !--div>--> ssdivs="pun">help-detail-feedback-wrapper"> divs="pun">help-detail-raty-area"> 以i 内容是否对您 cl帮助?所有 help-detail-raty">
    help-detail-c"pment-area">

    /文档使用asa否遇到以i 问题

    help-detail-problem-list">

    内容错误
  • spa反及p:
  • 链owR错误
  • 缺少代码/图片EXP例
  • 太简单/步骤待完善
  • 其他
  • 内容错误
  • spa反及p:
  • 链owR错误
  • 缺少代码/图片EXP例
  • 太简单/步骤待完善
  • 其他
  • s ul divs="pun">textarea-wrapper">

    spn建议

    s textarea placehol>er="="l.java"描述/文档使用as遇到 问题p改 建议"> 提交建议 匿名提交
  • help-detail-tip-area"> s epti>感谢c提交建议 help-detail-success-tip-area"> s is="pun">dbl-i"s-base-right">感谢c help-body-box-detail-feedback-list"> p<> window.HELP_NODE_ID=31717; p<> p<> window.detail = true; 所an>p<> p< n>p<" src="//www.aliyun.="p/rgn/aliyun_fooerer=js">p<> p< n>p<" src="//g.alicdn.="p/aliyun/help-doc/0.0.10/js/detail.js">p<> p< n>p<" src="//g.alicdn.="p/axdap<>