Sqlite_操作数据库_JDBC连接Java与数据库

10 篇文章 0 订阅
2 篇文章 0 订阅
一、S qlite    免费           能跨平台  android  ios 等设备上都内置sqlite【重点】
        他 是关系型数据库----表与表。。。表与表之间有能有关联关系的叫关系型数据库
二、SQLite数据库
         SQLite在使用前不需要安装设置,不需要进程来启动、停止或配置,而其他大多数SQL数据库引 擎是作为一个单独的服务器进程,被程序使用某种内部进程通信(典型的是TCP/IP),完成发送请求到服务器和接收查询结果的工作,SQLite不采用这 种工作方式。使用SQLite时,访问数据库的程序直接从磁盘上的数据库文件读写,没有中间的服务器进程。

三、Sqlite安装
    1,环境变量配置
    参考jdk环境变量的配置
    2,sqlte常用命令
    .databases  显示当前所有加载的数据库
    .help       显示所有的帮助命令
    .open ?FILENAME?  打开相应的数据库文件
    .tables     显示数据库里面的所有表
    .schema  表名    查看表的结构
    3,创建数据库
    sqlite3  数据库名
    4,数据类型
1,NULL  空
        2,INTEGER 整型 ---重点
        3,REAL    浮点型---重点
        4,TEXT    文本  ---重点
        5,varchar(长度)  存放文本   
四、SQLite 的操作表
    1,创建表    创建用户表   id name 
    语法
    create table 表名(
               id  integer ,
              name TEXT
    )
    2,删除表
    DROP TABLE 表名
    3,修改表
       a:修改表名:sqlite> ALTER TABLE 表名 RENAME TO 新的表名;
       b:修改列名:sqlite> ALTER TABLE 表名 ADD COLUMN SEX char(1);
向表里面添加数据------表的操作
1,增
insert into 表名(列名1,列名2)  values(值1,值2);
2,删
delete from 表名/user  where 条件 id=2   把user表中id为2的数据删除
3,改
update 表名  set name='rose'  where id=2          把id为2的数据的名字改成rose
4,查
select * from 表名         *代表所有列      select id,name form 表名   --只查表里面的id和name

五、Sqlite的运算符
1,SQLite 算术运算符  +  -  *  /  %
    和java的语法一样
2,SQLite 比较运算符    1---true     0----false
   =  检查两个操作数的值是否相等,如果相等则条件为真。
   == 检查两个操作数的值是否相等,如果相等则条件为真。
    > 检查左操作数的值是否大于右操作数的值,如果是则条件为真。
   >= 检查左操作数的值是否大于等于右操作数的值,如果是则条件为真。
   <  检查左操作数的值是否小于右操作数的值,如果是则条件为真。
   <= 检查左操作数的值是否小于等于右操作数的值,如果是则条件为真。
   <> 检查两个操作数是否不相等,如果不相等返回真  反之为false
   != 同<>
   
3,逻辑运算符
   AND   左右的表达式必须都为真才返回真
   OR    左右的表达式只要有一个为真则返回真 
   BETWEEN   判断值是否在某个区间    select 1 between 0 and 10;    判断1 是否在0-10之间
   IN      判断是否在列表中    select 1 in(1,2,3,4,5);    判断1 是否在 1,2,3,4,5 中
   NOT IN   判断是否不在列表中    select 1 in(1,2,3,4,5);    判断1 是否不在 1,2,3,4,5 中
   LIKE   LIKE 运算符用于把某个值与使用通配符运算符的相似值进行比较。 select 'aaba' like 'aa%';只要aaba是以aa开头,就返回真
   IS NULL  NULL 运算符用于把某个值与 NULL 值进行比较。
   ||      连接两个字符串

六、深入增删改查
CREATE TABLE users(id integer primary key autoincrement,name text not null,sex integer not null,age integer,salary real);
高级查询
排序  select * from users order by salary desc; 按salary降序排
      select * from users order by salary asc; 按salary升序排---默认情况
模糊查询      select * from users where name like  '%a%';  匹配users表里面的name包含a的所有记录
百分号 (%)匹配任意的字符
下划线 (_)匹配单个字符
过滤
    select distinct name from users;过虑重复名字

函数
COUNT  统计满足条件的记录数  select count(1) from users;
MAX    找到满足条件的记录中 值最大的   select max(salary) from users;
MIN    找到满足条件的记录中 值最小的   select min(salary) from users;
AVG    找到满足条件的记录的平均值     select avg(salary) from users;
SUM    找到满足条件的记录值的和       select sum(age) from users;
UPPER  把字符串转换为大写字母。
LOWER  把字符串转换为小写字母

七、Java连接数据库
A、JDBC
JDBC是用Java语言向数据库发送SQL语句。

B、JAVA连接数据库
1,使用驱动包  sqlitejdbc-v033-nested.jar
2,把jar包放到项目里面  如果是java项目【在项目里面新建lib文件夹,把驱动包放入】
3,把jar加入开发环境里面  右键jar包   Build path ---add to Build path

开始使用程序连接
1,加载驱动
    Class.forName("org.sqlite.JDBC");
2.指定URL字符串,值连接数据库的地址:主机+数据库名
    String url="jdbc:sqlite:/c:/Users/Arvin/testDB.db";
3.打开数据库连接:
    Connection conn = DriverManager.getConnection(url);
    需要说明的是,执行完这句后就会在上面的url路径里面创建一个数据库,如果没有该数据库的话!
    如果产生Exception in thread "main" java.sql.SQLException: out of memory    把路径盘的名改成小写
4.执行SQL语句→Statement
     String sql="delete from users where id=9";
     Statement statement=conn.createStataement();
     //statement.execute(sql);---true/false
    // statement.executeUpdate(sql);//针对添加,修改,删除  返回受影响的行数
     statement.executeQuery(sql);//针对查询使用,返回的是ResultSet

5,实际开发中,不使用Statement而使用PreparedStatement 

C、现在我们来看看具体怎么用
         先是工具类DBConnection,它负责与数据库的连接操作!
   
   
public class DBConnection {
private static String driver = "org.sqlite.JDBC";
private static String url = "jdbc:sqlite:/c:/Users/MXN/shopping";
// 得到连接
public static Connection getConnection() {
Connection conn = null;
try {
// 加载驱动
Class.forName(driver);
// 创建连接
conn = DriverManager.getConnection(url);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
}  
 
    增添数据,新建连接,往products表里面插入一条数据,通过pst.setString(id,values);进行设置,1,2,3,4指的是values(?,?,?,?)四个值,执行pst.executeUpdate()方法后,如果得到的值不为0,说明,插入数据成功。 int affect = pst . executeUpdate (); 其实affect返回的数据是受影响的数据条数,等于0说明没有插入成功。左后关掉连接
   
   
// 增添数据
public void addData(Product p) {
try {
Connection conn = DBConnection.getConnection();
String sql = "insert into products(proId,name,price,store) values(?,?,?,?)";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, p.getProId());
pst.setString(2, p.getProName());
pst.setDouble(3, p.getProPrice());
pst.setInt(4, p.getProStore());
int affect = pst.executeUpdate();
if (affect > 0) {
System.out.println("添加成功");
}
pst.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
    删除数据,新建连接,删除products表中name的值为name值得数据,如果得到的返回值不为0,说明删除成功!
   
   
//删除User数据
public void delUser(String name){
try {
Connection conn = DBConnection.getConnection();
String sql = "delete from products where name=?";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, name);
int affect = pst.executeUpdate();
if(affect>0){
System.out.println("删除成功");
}
pst.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
    修改数据,新建连接,修改products表中的数据,该sql语句的意思是修改数据表products中proId为传进来的proId值得那条数据中的proId,name,price,store的值,通过下面的pst.setString()方法进行设置,返回的affect值不为0记为修改成功。
   
   
 
//修改数据
public void updateData(String proId,Product p){
try {
Connection conn = DBConnection.getConnection();
String sql = "update products set proId=?,name=?,price=?,store=? where proId=?";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, proId);
pst.setString(2, p.getProName());
pst.setDouble(3,p.getProPrice());
pst.setInt(4, p.getProStore());
pst.setString(5, proId);
int affect = pst.executeUpdate();
if(affect>0){
System.out.println("修改成功");
}
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
    查询数据,查询数据跟其他的增删改数据不一样,他需要使用ResultSet返回查询到的数据,如果rs.next()为false,代表数据查询完毕,否则没有查询完毕!
   
   
//单个查询(按条件查询,返回boolean)
public boolean querys(String proId){
try {
Connection conn = DBConnection.getConnection();
String sql = "select * from products where proId=?";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, proId);
ResultSet rs = pst.executeQuery();
if(rs.next()){
rs.close();
pst.close();
conn.close();
return true;
}else{
System.out.println("查询失败");
rs.close();
pst.close();
conn.close();
return false;
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}














  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值