如果是maven项目,在pom.xml里加入依赖。不是的话下载相应的jar包放到lib目录下。这里驱动包的版本要和你cassandra的大版本一致。我这里cassandra的版本是最新的3.9,驱动是3.0

 <dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.0.0</version>
</dependency>

新建一个类CassandraTest。

连接cassandra

 public Cluster cluster;

 public Session session;

 public void connect()
{
// addContactPoints:cassandra节点ip withPort:cassandra节点端口 默认9042
// withCredentials:cassandra用户名密码 如果cassandra.yaml里authenticator:AllowAllAuthenticator 可以不用配置
cluster = Cluster.builder().addContactPoints("192.168.3.89").withPort(9042)
.withCredentials("cassandra", "cassandra").build();
session = cluster.connect();
}

驱动里自带了cassandra连接池的配置,将上面的稍作修改

 public Cluster cluster;

 public Session session;

 public void connect()
{
PoolingOptions poolingOptions = new PoolingOptions();
// 每个连接的最大请求数 2.0的驱动好像没有这个方法
poolingOptions.setMaxRequestsPerConnection(HostDistance.LOCAL, 32);
// 表示和集群里的机器至少有2个连接 最多有4个连接
poolingOptions.setCoreConnectionsPerHost(HostDistance.LOCAL, 2).setMaxConnectionsPerHost(HostDistance.LOCAL, 4)
.setCoreConnectionsPerHost(HostDistance.REMOTE, 2).setMaxConnectionsPerHost(HostDistance.REMOTE, 4); // addContactPoints:cassandra节点ip withPort:cassandra节点端口 默认9042
// withCredentials:cassandra用户名密码 如果cassandra.yaml里authenticator:AllowAllAuthenticator 可以不用配置
cluster = Cluster.builder().addContactPoints("192.168.3.89").withPort(9042)
.withCredentials("cassandra", "cassandra").withPoolingOptions(poolingOptions).build();
// 建立连接
// session = cluster.connect("test");连接已存在的键空间
session = cluster.connect(); }

创建键空间和表(这2个最好在搭建cassandra的时候完成)

 /**
* 创建键空间
*/
public void createKeyspace()
{
// 单数据中心 复制策略 :1
String cql = "CREATE KEYSPACE if not exists mydb WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}";
session.execute(cql);
} /**
* 创建表
*/
public void createTable()
{
// a,b为复合主键 a:分区键,b:集群键
String cql = "CREATE TABLE if not exists mydb.test (a text,b int,c text,d int,PRIMARY KEY (a, b))";
session.execute(cql);
}

对test表的CURD操作

 /**
* 插入
*/
public void insert()
{
String cql = "INSERT INTO mydb.test (a , b , c , d ) VALUES ( 'a2',4,'c2',6);";
session.execute(cql);
} /**
* 修改
*/
public void update()
{
// a,b是复合主键 所以条件都要带上,少一个都会报错,而且update不能修改主键的值,这应该和cassandra的存储方式有关
String cql = "UPDATE mydb.test SET d = 1234 WHERE a='aa' and b=2;";
// 也可以这样 cassandra插入的数据如果主键已经存在,其实就是更新操作
String cql2 = "INSERT INTO mydb.test (a,b,d) VALUES ( 'aa',2,1234);";
// cql 和 cql2 的执行效果其实是一样的
session.execute(cql);
} /**
* 删除
*/
public void delete()
{
// 删除一条记录里的单个字段 只能删除非主键,且要带上主键条件
String cql = "DELETE d FROM mydb.test WHERE a='aa' AND b=2;";
// 删除一张表里的一条或多条记录 条件里必须带上分区键
String cql2 = "DELETE FROM mydb.test WHERE a='aa';";
session.execute(cql);
session.execute(cql2);
} /**
* 查询
*/
public void query()
{
String cql = "SELECT * FROM mydb.test;";
String cql2 = "SELECT a,b,c,d FROM mydb.test;"; ResultSet resultSet = session.execute(cql);
System.out.print("这里是字段名:");
for (Definition definition : resultSet.getColumnDefinitions())
{
System.out.print(definition.getName() + " ");
}
System.out.println();
System.out.println(String.format("%s\t%s\t%s\t%s\t\n%s", "a", "b", "c", "d",
"--------------------------------------------------------------------------"));
for (Row row : resultSet)
{
System.out.println(String.format("%s\t%d\t%s\t%d\t", row.getString("a"), row.getInt("b"),
row.getString("c"), row.getInt("d")));
}
}

查询显示:

JAVA操作cassandra数据库的更多相关文章

  1. Java操作Sqlite数据库-jdbc连接

    Java操作Sqlite数据库步骤: 1. 导入Sqlite jdbc 本文使用sqlite-jdbc-3.7.2.jar,下载地址 http://pan.baidu.com/s/1kVHAGdD 2 ...

  2. Linux+Redis实战教程_day02_3、redis数据类型_4、String命令_5、hash命令_6、java操作redis数据库技术

    3. redis数据类型[重点] redis 使用的是键值对保存数据.(map) key:全部都是字符串 value:有五种数据类型 Key名:自定义,key名不要过长,否则影响使用效率 Key名不要 ...

  3. JAVA操作MongoDB数据库

    1. 首先,下载MongoDB对Java支持的驱动包 驱动包下载地址:https://github.com/mongodb/mongo-java-driver/downloads 2.Java操作Mo ...

  4. java操作MySQL数据库(插入、删除、修改、查询、获取所有行数)

    插播一段广告哈:我之前共享了两个自己写的小应用,见这篇博客百度地图开发的两个应用源码共享(Android版),没 想到有人找我来做毕设了,年前交付,时间不是很紧,大概了解了下就接下了,主要用到的就是和 ...

  5. Java 操作MySql数据库

    Java 项目开发中数据库操作是很重要的一个方面,对于初学者来说,MySql是比较容易熟悉的一种常见数据库,这篇文章记录了如何用Java来操作MySql数据库. 第一章 JDBC的概念 JDBC(Ja ...

  6. JAVA操作ORACLE数据库的存储过程

    一.任务提出 JAVA操作oracle11g存储过程实验需要完成以下几个实例: 1.调用没有返回参数的过程(插入记录.更新记录) 2.有返回参数的过程 3.返回列表的过程 4.返回带分页的列表的过程. ...

  7. Java操作Oracle数据库以及调用存储过程

    操作Oracle数据库 publicclass DBConnection {     //jdbc:oracle:thin:@localhost:1521:orcl     publicstaticf ...

  8. java操作mongoDB数据库的简单实例

    首先导入mongoDB的jar包 http://pan.baidu.com/s/1bnGMJRD //DataBase.java package com.mongodb.test; import ja ...

  9. Java 操作Oracle数据库

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...

随机推荐

  1. 16 redis之sentinel运维监控

    一:sentinel运维监控 Sentinel不断与master通信,获取master的slave信息. 监听master与slave的状态 如果某slave失效,直接通知master去除该slave ...

  2. MongoDB--安装部署

    MongoDB安装 说明: 本次安装教程: 版本:mongoDB-3.2.4 安装环境:windows 10 ,64位操作系统 准备:安装包.Robomongo(客户端用于查看mongoDB里面的数据 ...

  3. 中面试中你不可回避的C、C++的问题(一)

    基础中的基础 局部变量与全局变量问题 (使用’ ::’) 2.      如何在另个文件中引用一个全局变量 (extern) 3.      全局变量可以定义被多个C文件包含,并且是static 4. ...

  4. WCF探索之旅(三)——IIS公布WCF服务

    在之前的博客已经对WCF的基础知识做了介绍.而且做了一个简单的小样例. 假设你看了之前的博客,相信你已经对WCF有了一定的掌握.这篇博客主要说一下怎样把WCF服务公布的IISserver上. 在上篇博 ...

  5. Docker基础原理

    前言 Docker是一个开源的软件项目,让用户程序部署在一个相对隔离的环境运行,借此在Linux操作系统上提供一层额外的抽象,以及操作系统层虚拟化的自动管理机制.需要额外指出的是,Docker并不等于 ...

  6. API自动化测试利器——Postman

    自从开始做API开发之后,我就在寻找合适的API测试工具.一开始不是很想用Chrome扩展,用的WizTools的工具,后来试过一次Postman之后就停不下来了,还买了付费的Jetpacks.推出T ...

  7. 修改linux的hostname (修改linux系统的IP和hostname)

    # vi /etc/sysconfig/networkNETWORKING=yesHOSTNAME=yourname //在这修改hostnameNISDOMAIN=eng-cn.platform.c ...

  8. k-anonymity

    k匿名(k-anonymity)是一种常用的社交网络隐私保护技术,其思想是通过人为构造一定数量与目标节点拓扑结构相同的节点来降低用户被定位的概率 [匿名]英语怎么说_在线翻译_有道词典 http:// ...

  9. Chernoff-Hoeffding inequality -- Chernoff bounds, and some applications

    https://www.cs.utah.edu/~jeffp/teaching/cs5955/L3-Chern-Hoeff.pdf [大数据-通过随机过程降维 ] When dealing with ...

  10. Java语言基础(回头复习)

    /* 使用变量的时候要注意的问题: A:作用域 变量定义在哪个大括号内,它就在这个大括号内有效. 并且,在同一个大括号内不能同时定义同名的变量. B:初始化值 没有初始化值的变量不能直接使用. 你只要 ...