搜档网
当前位置:搜档网 › Hibernate对数据库的增删改查的操作

Hibernate对数据库的增删改查的操作

Hibernate对数据库的增删改查的操作
Hibernate对数据库的增删改查的操作

Hibernate对于数据库表的操作

首先,我们要对Hibernate在eclipse环境下进行布局配置。

详情请看Hibernate配置。

其次,我们了解几个查询的用法。

一、Criteria Query

Criteria Query通过面向对象化的设计,将数据查询条件封装为一个对象,换句话讲Criteria Query可以看作是传统SQL的对象化表示。如:

Criteria criteria = session.createCriteria(TUser.class);

criteria.add(Expression.eq(“name”,”Erica”));

criteria.add(Expression.eq(“sex”,new Integer(1)));

1.Criteria查询表达式

Criteria本身只是一个查询器,具体的查询条件需要通过Criteria.add方法添加到Criteria实例中。

如前面的例子所示,Expression对象具体描述了查询条件。针对SQL语法,Expression提供了对应的查询限定机制。

注意Expression各方法中的属性名参数(如Express.eq中的第一个参数),这里所谓属性名是POJO中对应实际库表字段的属性名(大小写敏感),而非库表中的实际字段名称。

几个查询示例:

查询名为“Erica”的用户记录:

Criteria criteria = session.createCriteria(TUser.class);

criteria.add(Expression.eq(“name”,”Erica”));

查询所有年龄大于18岁的用户记录:

Criteria criteria = session.createCriteria(TUser.class);

criteria.add(Expression.gt(“age”,new Integer(18)));

查询所有年龄大于20岁且小于30的用户记录:

Criteria criteria = session.createCriteria(TUser.class);

criteria.add(Expression.gt(“age”,new Integer(20)));

criteria.add(Expression.lt(“age”,new Integer(30)));

2.示例查询

Example类实现了Criterion接口,同样,它也可以用作Criteria的查询条件。Example 的作用是:根据已有对象,查找属性与之相符的其他对象。

先看一个简单的例子:

Criteria criteria = session.createCriteria(TUser.class);

Tuser exampleUser = new TUser();

exampleUser.setName(“Erica”);

criteria.add(Example.create(exampleUser));

List list = criteria.list();

for(int i = 0; i < list.size(); i++){

TUser user = (TUser)list.get(i);

System.out.println(“User[”+i+”]\t”+user.getName());

}

在这里我们新建了一个TUser对象exampleUser,并作为范本,查询所有name属性与之相同的用户记录。

对于这个范例而言,下列代码:

TUser exampleUser = new TUser();

exampleUser,setName(“Erica”);

criteria.add(Example.create(exampleUser));

的效果等同于:

criteria.add(Expression.eq(“name”,”Erica”));

默认情况下,Hibernate会过滤掉示例对象的Null值属性,我们也可以通过调用Example.excludeNone/excludeZeroes方法来对这个特性进行调整,或者通过Example.excludeProperty方法将某个属性排除在外。

示例查询最常用的场景是组合查询。我们常常需要在界面上提供若干查询选项,然后根据用户的选择返回符合条件的结果。

大部分情况下,我们会在代码中进行判断,根据用户输入的查询生成最终的查询条件。举个简单的例子:

public List queryUser(String name,Integer age)throws HibernateException{

Criteria criteria = session,createCriteria(TUser.class);

if(null != name){

criteria.add(Expression.like(“name”,name));

}

if(null != age){

criteria.add(Expression.eq(“age”,age));

}

return criteria.list();

}

对于上面的例子,假设出现了10个可选参数,那么用Expression会很复杂。示例查询在这里恰恰能发挥其特长,对于上面这个例子而言,我们将其修改如下:public List queryUserByExample(TUser user)throws HibernateException{

Criteria critera = session.createCriteria(TUser.class);

critera.add(Example.create(user));

return criteria.list();

}

3.复合查询

在数据关联部分中,我们引入了一个例子作为一对多关联的范例:TUser对象和TAddress对象的一对多关联。

通过下面的代码,我们可以打印出目前数据库内所有的用户及其地址:

Criteria criteria = session.createCriteria(TUser.class);

List list = criteria.list();

for(int i = 0;i < list.size();i++){

TUser user = (TUser)list.get(i);

System.out.println(“\t”+user.getName());

Set addrSet = user.getAddresses();

Iterator it = addrSet.iterator();

while(it.hasNext()){

TAddress addr = (TAddress) it.next();

System.out.println(“\t\t”+addr.getAddress());

}

}

输出结果如下:

User[0]

Erica

Shanghai

User[1]

Cartier

Guangzhou

现在如果我们需要查找出所有属位于上海的用户该如何操作,通过Criteria的复合查询我们可以轻松完成这个任务。对上面代码稍加改造:

Criteria criteria = session.createCriteria(TUser.class);

Criteria addrCriteria = criteria.createCriteria(“addresses”);

addrCriteria.add(Expression.like(“address”,”%Shanghai%”));

List list;

list = criteria.list();

for(int i = 0;i < list.size();i++){

System.out.println(“User[”+i+”]”);

TUser user = (TUser)list.get(i);

System.out.println(“\t”+user.getName());

Set addrSet = user.getAddresses();

Iterator it = addrSet.iterator();

while(it.hasNext()){

TAddress addr = (TAddress)it.next();

System.out.println(“\t\t”+addr.getAddress());

}

}

运行结果如下:

User[0]

Erica

Shanghai

代码中下画线部分就是我们新增的复合查询条件,可以看到,我们可以通过Criteria.createCriteria 方法在原有Criteria对象的基础上构建复合查询。

通过:

Criteria addrCriteria = criteria.createCriteria(“addresses”);

我们在原有查询的基础上,针对TUser对象的addresses属性构造了新的查询过滤条件:

addrCriteria.add(Expression.like(“address”,”%Shanghai%”));

Hibernate会在运行期构造以下SQL语句完成用户查询:

select … from T_USER user inner join T_Address address on

user.id = https://www.sodocs.net/doc/131842920.html,er_id where address.address like ?

二、Hibernate Query Language(HQL)

完整的HQL语法结构如下:

[select/update/delete…] [from…] [where…] [group by…] [having…] [order by…]

三、HQL实用技术

1.实体查询

下面我们来看最简单的一个例子:

String hql = “from TUser”;

Query query = session.createQuery(hql);

List userList = query.list();

上面的hql:”from TUser”,将取出TUser的所有对应记录,对应SQL为”select…from T_User”。

我们也可以在HQL中采用全路径类名,特别是在应用中存在同名类(包名不同)的情况下。如:

“from com.redsaga.hibernate.db.entity.TUser”

需要注意的是,Hibernate中,查询的目标实体存在在继承关系的判定如:”from TUser”将返回所有TUser以及TUser子类的记录,假设系统中存在TUser的两个子类:TSysAdmin 和TSysOperator,那么”from TUser”返回的记录将包含这两个子类的所有数据,即使TSysAdmin和TSysOperator分别对应了不同的库表。

Java中所有类的根类都是https://www.sodocs.net/doc/131842920.html,ng.Object,那么,如下HQL将返回数据库中所有库表的记录:“from https://www.sodocs.net/doc/131842920.html,ng.Object”

Where子句:

如果我们需要取出名为”Erica”的用户的记录,类似SQL,我们可以通过HQL语句加以限定:

String hql = “from TUser as user where https://www.sodocs.net/doc/131842920.html, = …Erica?”;

Query query = session.createQuery(hql);

List userList = query.list();

这里我们新引入了两个子句”as”和”where”,as子句为类名创建了一个别名,而where字句指定了限定条件。其中as子句可忽略,如:

“from TUser user where https://www.sodocs.net/doc/131842920.html,=?Erica?”

where子句中,我们可以通过比较操作符指定甄选条件,如:

= , <> , < , > , >= , <= , between, not between, in , not in , is ,like等。

下面看几个简单的示例:

from TUser user where user.age>20;

from TUser user where user.age between 20 and 30

from TUser user where user.age in(18,28);

from TUser user where https://www.sodocs.net/doc/131842920.html, is null

from TUser user where https://www.sodocs.net/doc/131842920.html, like …Er%?

对于用于字符串比较的like操作符而言,”like ?Er%?”表示所有以Er开头的字符串,”like …%Er?”表示所有以Er结尾的字符串,而”like …%Er%?”则表示包含Er字样的字符串(无论Er 出现在字符串首尾或中间)。

我们也可以在where子句中使用算术表达式,如:

From TUser user where (user.age % 2 = 1)

上面的HQL将返回所有年龄为奇数的用户记录。

与SQL相同,我们可以通过and、or等逻辑连接符组合各个逻辑表达式:

from TUser user where (user.age>20) and (https://www.sodocs.net/doc/131842920.html, like …Ee%?)

2.属性查询

有时我们并不需要获取完整的实体对象,如在一个下拉框中显示用户名,此时我们需要的数据可能仅仅是实体对象的某个属性(库表记录中的某个字段信息)。同样,通过HQL 我们也可以简单地做到这一点:

List list = session.createQuery(“select https://www.sodocs.net/doc/131842920.html, from TUser user”).list();

Iterator it = list.iterator();

while(it.hashNext()){

System.out.println(it.next()); //每个条目都是一个String类型数据。

}

HQL”select https://www.sodocs.net/doc/131842920.html, from TUser user”指定了我们只需获取TUser对象的name属性(也就是T_User表的name字段)。此时返回的list数据结构中,每个条目都是一个String类型的name数据(而非TUser对象);

我们也可以通过一条HQL获取多个属性:

List list = session.createQuery(“select https://www.sodocs.net/doc/131842920.html,,user.age from TUser as user”).list();

Iterator it = list.iterator();

while(it.hasNext()){

Object[] results = (Object[])it.next();

System.out.println(results[0]);

System.out.println(results[1]);

}

“select https://www.sodocs.net/doc/131842920.html,,user.age from TUser as user”表明我们需要读取name 和age属性的内容。而此时,返回的list数据结构中,每个条目都是一个对象数组(Object[]),其中,依次包含了我们所获取的属性数据。

如果觉得返回数组的方式不够符合面向对象的风格,我们也通过在HQL中动态构造对象实例的方法对这些平面化的数据进行封装。

List list = this. session.createQuery(“select new TUser(https://www.sodocs.net/doc/131842920.html,,user.age)

from TUser as user”).list();

Iterator it = list.iterator();

while(it.hasNext()){

TUser user = (TUser)it.next();

user.setName(“test”);

session.saveOrUpdate(user); //这里将导致一次insert操作,而非update.

}

上面,我们实现了通过HQL获取数据的部分属性值,与此同时,我们也可以在HQL的Select子句中使用统计函数:

List list = session.createQuery(“select count(*),min(user.age) from TUser as user”).list();

Iterator it = list.iterator();

while(it.hasNext()){

Object[] results = (Object[])it.next();

System.out.println(results[0]);

System.out.println(results[1]);

}

甚至原生SQL函数,如:

select upper(https://www.sodocs.net/doc/131842920.html,) from TUser as user

或者利用distinct关键字,剔除返回集中的重复记录:

Select distinct https://www.sodocs.net/doc/131842920.html, from TUser as user

3.实体更新与删除

最后,我们对数据库的表进行操作。

1.我们先对于数据库的一张表进行操作。

2.对于数据库两张表的级连操作。

3.对于数据库三张表的级连操作。

数据库的增删改查(精)

学习收藏数据库增删改查 --查询信息系和计算机系的学生,并按学生所在系和学号排序。select sno,sname,Sdept from Student where Sdept='CS'OR Sdept='IS' order by Sdept,sno ASC --查询学生表中最小的年龄。 select MIN(sage from student --查询课程名中包含“数据”的课程名。 select cno,cname from course where Cname like'%数据%' --查询先行课程为空值的课程号、课程名及学分 select cno,cname,ccredit from Course where Cpno is null --查询李勇选修的数据库课程的成绩 select grade from SC where Sno=(select Sno from Student where Sname='李勇'and Cno=(select Cno from Course where cname='数据库' --查询平均成绩分以上的学生的学号 select distinct sno from SC scx where (select AVG(Grade from SC scy

where scy.sno=scx.Sno>85 --求计算机系没有选修数据库课程的学生姓名 select sname from Student where Sno not in(select Sno from SC where Cno in(select Cno from Course where Sname='数据库'and Sdept='IS' --求至少选修了学号为S1所选修的全部课程的学生学号 select distinct sno from SC scx where not exists(select*from SC scy where scy.Sno='20021522'and not exists(select* from sc scz where scz.sno=scx.sno and https://www.sodocs.net/doc/131842920.html,o=https://www.sodocs.net/doc/131842920.html,o --求各系的系的学生人数的,并将结果按学生人数的降序排序 select Sdept,COUNT(sno from Student group by Sdept order by Sdept ASC --查询选修了数学课程并且成绩高于该门课程平均分的学生学号和成绩 select sno,grade from SC scx where Grade>=(select AVG(Grade from SC scy where Cno=(select Cno from Course where Cname='数学'and Cno=(select Cno from Course

数据库增删改查基本语句

数据库增删改查基本语句 adoquery1.Fielddefs[1].Name; 字段名 dbgrid1.columns[0].width:=10; dbgrid的字段宽度 adoquery1.Fields[i].DataType=ftString 字段类型 update jb_spzl set kp_item_name=upper(kp_item_name) 修改数据库表中某一列为大写select * from master.dbo.sysobjects ,jm_https://www.sodocs.net/doc/131842920.html,ers 多库查询 adotable1.sort:='字段名称ASC' adotable排序 SQL常用语句一览 sp_password null,'新密码','sa' 修改数据库密码 (1)数据记录筛选: sql="select * from 数据表where 字段名=字段值orderby 字段名[desc] " sql="select * from 数据表where 字段名like '%字段值%' orderby 字段名[desc]" sql="select top10 * from 数据表where 字段名orderby 字段名[desc]" sql="select * from 数据表where 字段名in('值1','值2','值3')" sql="select * from 数据表where 字段名between 值1 and 值2" (2)更新数据记录: sql="update 数据表set 字段名=字段值where 条件表达式" sql="update 数据表set 字段1=值1,字段2=值2……字段n=值n where 条件表达式" (3)删除数据记录: sql="delete from 数据表where 条件表达式" sql="delete from 数据表"(将数据表所有记录删除) (4)添加数据记录: sql="insert into 数据表(字段1,字段2,字段3…) values(值1,值2,值3…)" sql="insert into 目标数据表select * from 源数据表"(把源数据表的记录添加到目标数据表)

SQL数据库中的增删改查总结1

一、增:有2种方法 1.使用insert插入单行数据: 语法:insert [into]<表名> [列名] values <列值> 例:insert into Strdents (姓名,性别,出生日期) values ('邢金聪','男','1990/6/15') 注意:如果省略表名,将依次插入所有列 2.使用insert,select语句将现有表中的数据添加到已有的新表中 语法:insert into <已有的新表> <列名> select <原表列名> from <原表名> 例:insert into addressList ('姓名','地址','电子邮件')selectname,address,email from Strdents 注意:查询得到的数据个数、顺序、数据类型等,必须与插入的项保持一致 二、删:有2中方法 1.使用delete删除数据某些数据 语法:delete from <表名> [where <删除条件>] 例:delete from awhere name='邢金聪'(删除表a中列值为邢金聪的行) 注意:删除整行不是删除单个字段,所以在delete后面不能出现字段名 2.使用truncate table 删除整个表的数据

语法:truncate table<表名> 例:truncate table addressList 注意:删除表的所有行,但表的结构、列、约束、索引等不会被删除;不能 用于有外建约束引用的表 三、改 使用update更新修改数据 语法:update <表名> set <列名=更新值> [where <更新条件>] 例:truncate table addressList 注意:删除表的所有行,但表的结构、列、约束、索引等不会被删除;不能 用于有外建约束引用的表 四、查 1.普通查询 语法:select <列名> from <表名> [where <查询条件表达试>] [order by<排序的列 名>[asc或desc]] 1).查询所有数据行和列 例:select * from a 说明:查询a表中所有行和 2).查询部分行列--条件查询 例:select i,j,kfrom a where f=5 说明:查询表a中f=5的所有行,并显示i,j,k3列

数据库基本知识(自己整理,初学者可以看一下,基于某MySql)

数据库

1常见数据库 1.1MySql : 甲骨文 1.2Oracle: 甲骨文 1.3SQL Server: 微软 1.4Sybase: 赛尔斯 1.5DB2: IBM 2MySql基础知识 2.1关系结构数据模型数据库 2.2SQL(Structured Query Language)结构化查询语言2.2.1DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等 操作数据库 CREATE DATABASE [IF NOT EXISTS]mydb1 USE mydb1 DROP DATABASE [IF NOT EXISTS] mydb1

ALTER DATABASE mydb1 CHARACTER SET utf8 操作表 插入表 CREATE TABLE stu( sid CHAR(6), sname VARCHAR(20), age INT, gender VARCHAR(10) ); 更改表 ALTER TABLE t_user ADD (student varcher(20)) ALTER TABLE t_user MODIFY gender CHAR(20) ALTER TABLE t_user CHANGE gender VARCHER(20) ALTER TABLE t_user REMANE genderTO genders ALTER TABLE t_user DROP gender 删除表 DROP TABLE t_user 2.2.2DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据) 插入数据 INSERT INTO t_user VALUES() INSERT INTO 表名 VALUES(值1,值2,…)

JAVA数据库基本操作增删改查(精)

JAVA 数据库基本操作, 增删改查 package mypack; JAVA 数据库基本操作, 增删改查 import java.sql.Connection; import java.sql.ResultSet; import java.util.ArrayList; public class DbOper {//查询多行记录public ArrayList select({Connection conn =null; ResultSet rs =null; try {import java.sql.PreparedStatement; import java.sql.SQLException; PreparedStatement pstmt =null; ArrayList al =new ArrayList(; conn =DbConn.getConn(;pstmt =conn.prepareStatement(“select *from titles ”; rs =pstmt.executeQuery(;while (rs.next({Titles t =new Titles(;t.setTitleid(rs.getString(1;t.setTitle(rs.getString(2;al.add(t;}}catch (SQLExceptione { e.printStackTrace(;}finally {try {//TODO 自动生成catch 块if (rs!=null rs.close(;if (pstmt!=nullpstmt.close(;if (conn!=nullconn.close(;}catch (SQLExceptione { e.printStackTrace(;}}//TODO 自动生成catch 块 return al; }//查询单个对象public Titles selectOne(Stringtitleid{Connection conn =null; ResultSet rs =null; try {PreparedStatement pstmt =null; Titles t =new Titles(;

数据库增删改查

02.连接命令:mysql -h[主机地址] -u[用户名] -p[用户密码] 03.创建数据库:create database [库名] 04.显示所有数据库: show databases; 05.打开数据库:use [库名] 06.当前选择的库状态:SELECT DATABASE(); 07.创建数据表:CREATE TABLE [表名]([字段名] [字段类型]([字段要求]) [字段参数], ......); 08.显示数据表字段:describe 表名; 09.当前库数据表结构:show tables; 10.更改表格 11. ALTER TABLE [表名] ADD COLUMN [字段名] DATATYPE 12. 说明:增加一个栏位(没有删除某个栏位的语法。 13. ALTER TABLE [表名] ADD PRIMARY KEY ([字段名]) 14. 说明:更改表得的定义把某个栏位设为主键。 15. ALTER TABLE [表名] DROP PRIMARY KEY ([字段名]) 16. 说明:把主键的定义删除。 17.显示当前表字段:show columns from tablename; 18.删库:drop database [库名]; 19.删表:drop table [表名]; 20.数据操作 21.添加:INSERT INTO [表名] VALUES('','',......顺序排列的数据); 22.查询: SELECT * FROM [表名] WHERE ([条件]); 23.建立索引:CREATE INDEX [索引文件名] ON [表名] ([字段名]); 24.删除:DELETE FROM [表名] WHERE ([条件]); 25.修改:UPDATE [表名] SET [修改内容如name = 'Mary'] WHERE [条件]; 26. 27.导入外部数据文本: 28.1.执行外部的sql脚本 29.当前数据库上执行:mysql < input.sql 30.指定数据库上执行:mysql [表名] < input.sql 31.2.数据传入命令load data local infile "[文件名]" into table [表名]; 32.备份数据库:(dos下) 33.mysqldump --opt school>school.bbb 34. 35. 36. 37.提示:常用MySQL命令以";"结束,有少量特殊命令不能加";"结束,如备份数据库 38.一. 增删改查操作 39. 40.============================================================================ ===== 41.1. 增: 42.insert into 表名values(0,'测试'); 43.注:如上语句,表结构中有自动增长的列,也必须为其指定一个值,通常为0 44.insert into 表名(id,name) values(0,'尹当')--同上

SQL常用增删改查语句

SQLSQL常用增删改查语句 作者:hiker 一.Insert 插入语句 1.Insert into 表名(列名)values (对应列名值) //插入一行. 2.Insert into 新表名(列名) Select (列名) 旧表名 3.Select 旧表名.字段… Into 新表名from 旧表名 4.Select identity ( 数据类型,标识种子,标识增长量) as 列名 Into新表名 From 旧表名 5.Insert 表名(列名) Select (对应列名值) union Select (对应列名值) union Select (对应列名值) 二.Update 更新语句 1.Update 表名set 列名=’更新值’ where 更新条件 三.delete 删除语句 1.delete from 表名where 删除条件 2.truncate table 表名//删除表中所有行 四.select 基本查询语句 1.select 列名from 表名where 查询条件 order by 排序的列名asc或desc升/降 2.select 列名as 别名from 表名where 查询条件 3.select 列名from 表名where 列名is null //查询空值 4.select 列名, ‘常量值’ as 别名from 表名//查询时定义输出一列常量值 5.select top 5 列名from 表名//查询前5行 6.select top 5 percent 列名from 表名//查询前百分之5的数据行 五.select 函数查询语句 1.select LEN(Class_Name)from Class //查询class_Name字符串长度 2.select upper(Class_Name)from Class //查询class_Name并转换为大写 3.ltrim和rtrim //清除字符串左右空格 4.select REPLACE(card_No,'0','9')from CardRecord//修改列中字符串中的字符 列名字符串中0修改为9 5.select STUFF(Card_No,2,3,'8888')from CardRecord 列名字符串中第2个开始删除3个字符,再从第二个开始插入8888字符串 6.select GETDATE()//显示系统日期

mysql增删改查基本语句

mysql 增、删、改、查基本语句 数据库的链接和选择及编码 $link=mysql_connect("localhost","root","123456") or die("数据库连接失败".mysql_error()); $sel=mysql_select_db("login",$link) or die("数据库选择失败".mysql_error()); mysql_query("set names 'utf8'"); 添加数据 $link=mysql_connect("localhost","root","123456") or die("数据库连接失败".mysql_error()); $sel=mysql_select_db("login",$link) or die("数据库选择失败".mysql_error()); mysql_query("set names 'utf8'",$sel); $add="insert into title(title,content,username,time) values('$title','$content','$username',$time)"; $query=mysql_query($add); if($query){ echo "add sucess"; echo ""; } else echo "add false"; 删除数据 $link=mysql_connect("localhost","root","123456") or die("数据库连接失败".mysql_error()); $sel=mysql_select_db("login",$link) or die("数据库选择失败".mysql_error()); mysql_query("set names 'utf8'"); $id=$_GET['id']; $delete="delete from title where id='$id'"; $query=mysql_query($delete); if($query){ echo "delete sucess!"; echo ""; } else echo "delete false"; 改数据 $link=mysql_connect("localhost","root","123456") or die("数据库连接失败".mysql_error()); $sel=mysql_select_db("login",$link) or die("数据库选择失败".mysql_error()); mysql_query("set names 'utf8'",$sel);

数据库增删改查操作(2)(精)

数据库增删改查操作(2) 一、案例描述 程序运行的时候加载的界面如图1,包括添加、删除、修改和查询所有数据按钮,并实现相应功能。 图1 图2 单击“添加”按钮,插入一条记录,效果如图2;单击“查询全部”按钮,查询得到全部记录,并将结果打印出来,如图3;单击“删除”按钮,删除指定记录,如图4;单击“修改”按钮,修改指定记录,如图5。 图3

图4 图5 二、知识链接 (4)ContentValues类 ● ContentValues类和Hashtable类较为相似,它用于存储一些键值对,可以被ContentResolver类处理,但是它存储的键值对当中的键是一个String类型,而值都是基本类型。ContentValues类作为一个重要的参数在SQLiteDatabase中的insert,update等方法中使用。 ● ContentValues类有3种构造方法,格式分别如下: √ ContentValues(:使用默认的初始大小来创建一个空集。 √ ContentValues(int size):使用指定的初始大小size值来创建一个空集。 √ ContentValues(ContentValues from):复制给定的集合from,用于创建一组集合数值。 ● ContentValues类的常用方法介绍如下:

√ void clear(:清空集合中的所有数值。 √ boolean containsKey(String key):如果集合中包含了指定的关键字key,则返回true,否则返回false。 √ Object get(String key):返回关键字key对应的数值,返回数值类型为Object,通常还需要进行强制类型转换。 √ void put(String key,Integer value):将一个值加入到集合中,其中参数key表示集合中的关键字;参数value表示要添加的数据。ContentValues类还有很多put方法,主要的区别是第二个参数为其他数据类型,例如:put(String key,Byte value)、put(String key,Float value)、put(String key,Short value)、put(String key,byte[] value) √ void remove(String key):将某个关键字key的数值从集合中删除。 √ int size (:返回集合中数值的个数。 三、案例实现 (1)MainActivity.java中添加数据的方法 /** * 添加一条记录 */ public void add(View view { Random random=new Random(; SQLiteDatabase db=personHelper.getWritableDatabase(; //db.execSQL("insert into info(name,phone values(?,?",new Object[]{"张三"+random.nextInt(100,"186********"}; ContentValues values=new ContentValues(; values.put("name", "张三"+random.nextInt(100; values.put("phone", "186775411"+random.nextInt(100;

(完整word版)SQL常用的增删改查语句、视屏笔记

SQL:结构化查询语言,是国际化标准组织采纳的标准数据库语言 作用:数据库管理员可以用利用次语言操作数据库系统,即:SQL是一种能够被数据库系统读懂的操作语言。 T—SQL是微软公司针对SQL Server这种关系数据库所定义的一种SQL语言,用户可以完成Server数据库中的所有操作。 SQL的分类: (1):数据定义语言,DDL 用来创建数据库和数据库中的各种对象 数据库中的对象包括:表、视图、索引、存储过程、触发器 DDL常用的命令包括:create、alter、drop (2):数据操纵语言,DML 可以完成对数据库中数据的查询、更新、删除、插入的功能 DML常用的命令包括:select、update、delete、insert (3)数据控制语言,DCL DCL常用的命令包括:grant、revoke、deny (4)数据类型 1、数字数据类型 a、整型数据类型:bigint、int、smallint、tinyint b、浮点数据类型:float、real c、固定精度数据类型:decimal、numeric d、货币数据类型:money、smallmoney 将数据格式转换成字符串方法:STR(ID);---ID为数据类型,STR(ID)为字符串 2、字符数据类型:varchar、char、text、nchar、nvarchar、ntext 区别char和varchar数据类型: char数据类型是存放固定长度的字符 Varchar数据类型是存放动态长度的字符 char(14),实际放入到数据库的字符长度为14个字符,如果实际存储的长度小于定义的长度,那么数据库会在次字符串后面加上3个空格 1、insert语句: insert语句是属于SQL语言中的DML 作用:为表插入数据 你向一个表中插入一条新记录,但有一个字段没有提供数据。在这种情况下,有下面的四种可能: 1、如果该字段有一个缺省值(默认值),该值会被使用。 2、如果该字段可以接受空值,而且没有缺省值,则会被插入空值。 3、如果该字段不能接受空值,而且没有缺省值,就会出现错误。你会收到错误信息: The column in table mytable may not be null. 4、如果该字段是一个标识字段,那么它会自动产生一个新值。当你向一个有标识字段的表中插入新记录时,只要忽略该字段,标识字段会给自己赋一个新值。 使用INSERT语句可向文本型字段中插入数据。但是,如果你需要输入很长的字符串,你应该使用WRITETEXT语句。 语法:insert into 表名(列名1,列名2,…..) values(值1,值2,….) 注意:(列名1,列名2,…..)可以不写,这样的话,插入的values(值1,值2,….)中的值必须包含表中的所有列,不然会报错。

数据库语句增删改查

mysql语句用法,添加、修改、删除字段一,连接MySQL 二,MySQL管理与授权 三,数据库简单操作 四, 数据库备份 五,后记 一,连接MySQL 格式:mysql -h 远程主机地址 -u 用户名 -p 回车 输入密码进入: mysql -u root -p 回车 Enter password: ,输入密码就可以进入 mysql> 进入了 退出命令:>exit 或者ctrl+D 二,MySQL管理与授权 1.修改密码:

格式:mysqladmin -u 用户名 -p 旧密码 password 新密码 2.增加新用户: >grant create,select,update....(授予相关的操作权限) ->on 数据库.* -> to 用户名@登录主机 identified by '密码' 操作实例: 给root用户添加密码: # mysqladmin -u root password 52netseek 因为开始root没有密码,所以-p旧密码一项可以省略. 登陆测试: # mysql -u root -p 回车 输入密码,成功登陆. 将原有的mysql管理登陆密码52netseek改为52china. # mysqladmin -u root -p 52netseek password '52china' 创建数据库添加用户并授予相应的权限: mysql> create database phpbb; Query OK, 1 row affected (0.02 sec)

mysql> use phpbb; Database changed mysql> grant create,select,update,insert,delete,alter -> on phpbb.* -> to phpbbroot@localhost identified by '52netseek'; Query OK, 0 rows affected (0.00 sec) 授予所有的权限: >grant all privileges >on bbs.* >to bbsroot@localhost identified by '52netseek' 回收权限: revoke create,select,update,insert,delete,alter on phpbb.* from phpbbroot@localhost identified by '52netseek'; 完全将phpbbroot这个用户删除: >use mysql >delete from user where user='phpbbroot' and host='localhost'; >flush privileges; 刷新数据库 三,数据库简单操作

Mysql数据库·增删改查

Mysql Oracle(甲骨文) 大型数据库 MySql 中小型数据库 DB2 SqlServer ..... Mysql的发展: 瑞典的Mysql AB公司 2008年Sun公司(JAVA) 2009年Oracle 收购sun公司 IBM 69亿美元sun Eclipse(日蚀) Oracle 74亿美元sun Mysql的简单使用: 1.登陆mysql数据库 win+r --->cmd mysql -uroot -p1234 修改密码:mysql> set password for rootlocalhost = password('1234'); 此处可能存在异常情况原因:a、未配置环境变量b、Mysql服务未开启(net start mysql) 2.对库的操作 a.查看所有的库 show databases; 系统自带库: information_schema mysql test b.创建库 create database day01;(不指定编码,跟随数据库系统编码) create database db1 default character set gbk;(指定编码) 查看创建库的语句: show create database 库名. 修改库的编码: alter database day01 default character set utf8; c.删除库 drop database 库名.

drop database day01; 注意: 系统自带的三个库不能删除. d.使用库 use db1; 3.对表的操作 表:二维关系表有行有列的关系表. 记录:表中的一行数据. 字段:表中的一列. 常用的字段类型: 字符串类型: varchar(长度) 、char 数值类型: int(整数) float double(小数) 日期类型: date a.创建表 员工表:员工号性别年龄职位薪水入职日期 create table emp( empno varchar(4), name varchar(30), sex varchar(5), age int(3), job varchar(30), salary int(5), hiredate date ); b.查看所有的表 show tables; c.查看建表语句 show create table 表名. d.查看表结构 desc 表名. e.往表中插入数据 e1.给表中所有的字段插入数据 insert into emp (empno,name,sex,age,job,salary,hiredate) values ('1001','zhangsan','m',22,'developer',10000,'2015-12-21'); 简写形式: insert into emp values ('1002','lisi','m',23,'test',8000,'2015-10-10'); e2.给表中部分字段插入数据 insert into emp(empno,name,sex,age) values ('1003','cuihua','w',18);

SQL单词及数据库增删改查

数据库(Database, DB) 数据库管理系统(Database Management System, DBMS) 数据库管理员(Database Administrator, DBA) 数据库系统(Database System, DBS) SQL:结构化查询语言(structured Query Language)DB: 数据库(database) DBA:数据库管理员(database administrator)DBMS:数据库管理系统(database management system) Toa d:癞蛤蟆,一款开发数据库的可视化软件 Roo t: 根 Re la tion shi p:关系 U ser:用户 Ta ble:表 P ro ce dure:存储过程 Fun c tion:函数 Tri gger:触发器 Vie w:视图 In de x:索引 C rea te:创建 Dro p:删除 Ta ble:表 En gine:引擎 Co lu mn:列 P ri ma ry:主要的 Primary key:主键 Na me:列名 Au to:自动的 In cre men t:可增长的 Au to_In cre men t: 自动增长 Da ta Ty pe:数据类型 Not null:非空 Co mmen t:注释 Cha ra c ter se t:字符集 Co lle c tion:采集(对比方法) Fo reig n:外部的

Fo reig n key:外键 SQL 数据化查询语言 DML数据操作语言(Data Manipulation Language)DCL数据控制语言(Data Control Language)DQL: 数据查询语言(Data Query Language)DDL: 数据定义语言(Data Definition Language) in ser t:插入(增) de le te:删除(删) up da te:修改(改) se le c t:查询(查) in to:到哪里。。。 fro m:从哪里来。。。 va lue:值 u nio n:拼接 wh ere:在。。。。。 se t:设置 trun ca te:截断 im por t:导入 ex por t:导出 Or der:顺序 Or der by:排序 Re p la ce:替换 Now:现在 Cei ling:天花板 F loo r:地板 Si gn:符号 Con ver t:转换 Di s tin c t:独特的(去重复的) Li mi t:限制 li ke:像。。。一样 be t wee n 。。。and:在。。。。和。。。。之间 su m:和 avg:平均值

sql与mysql可视化增删改查

MYSQL与SQL可视化增,删,改 1.建立表格: 属性: public JTable table; public DefaultTableModel dftm; public String[] columnNames= new String[] { "序号", "用户名", "密码"}; // 定义数组表示表格标题 dftm = new DefaultTableModel(null, columnNames); /*for (int i = 0; i < 10; i++) { Object[] content = { 1, 2, 3 }; dftm.addRow(content);// 增加行 }*/ initTable(dftm); JTable table = new JTable(dftm);// 根据TableModel显示内容 JScrollPane src = new JScrollPane(table); //给表格增加滚动条 src.setBounds(50, 150, 500, 200); //设置滚动条位置与大小 contentPane.add(src); 2.“修改用户”按钮的代码: JButton rewamp = new JButton("\u4FEE\u6539\u7528\u6237"); rewamp.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int id=Integer.parseInt(txtId.getText()); String name=txtName.getText();//取得用户名文本框的值 String pwd=txtPwd.getText();//取得用户密码文本框的值 String sqlUpdate="UPDATE userlist set name='" + name+"', password='"+pwd+"' where Id="+id; DBComm dbco=new DBComm(); dbco.openConnection(); try { dbco.executeUpdate(sqlUpdate);

简单的连接数据库增删改查(1)

package com.suqin.Tank2; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Vector; import javax.swing.JScrollPane; import javax.swing.table.AbstractTableModel; public class Mxstu extends AbstractTableModel { // 集合 Vector rowDate, columnnNames; // 连接数据库 Connection conn; // 执行sql 语句 PreparedStatement pst; // 集合级 ResultSet rs;

// 驱动程序 public String Driver = "com.mysql.jdbc.Driver"; // 连接地址mysql数据库名称public String Url = "jdbc:mysql://127.0.0.1:3306/mysql"; // 用户名 public String name = "root"; // 用户密码 public String password = "admin"; //sql语句 String sql; public void Showsql(String sql) { if (sql=="") { sql="select * from students"; } columnnNames = new Vector(); // 设置列 columnnNames.add("学号"); columnnNames.add("姓名"); columnnNames.add("性别"); columnnNames.add("年龄"); columnnNames.add("籍贯"); columnnNames.add("系别"); // 设置行内容 rowDate = new Vector(); // 夹在驱动程序 try { Class.forName(Driver); conn = DriverManager.getConnection(Url, name, password); // 执行语句 //sql = ("select * from students"); pst = conn.prepareStatement(sql); // 得到结果集合 rs = pst.executeQuery(); // 得到记录 while (rs.next()) { // 设置行 Vector hang = new Vector(); hang.add(rs.getInt(1)); hang.add(rs.getString(2)); hang.add(rs.getString(3)); hang.add(rs.getInt(4)); hang.add(rs.getString(5));

数据库基础知识点

1. 数据库的作用 持久化:永久得保存数据。 数据挖掘:通过以有信息,发掘出有价值的信息。 冗余:数据的重复出现,(插入,删除,修改)带来一些异常。查询时可以提高查询的效率。 2. 创建数据库,创建表,确定表中字段的类型 数据文件:.mdf(main data file主要数据文件) .ldf(log data file 日志数据文件) 数据完整性:保证数据库的数据是客观真实的,没有错误的。 数据库登录: 方式一:window身份验证,如果你具有登录操作系统的权限,你就可以登录登录数据库。 方式二:sql server身份验证,能够登录操作系统,还需要知道登录名和密码。 用户名sa 数据库管理者,他是数据库的最大权限拥有者 常用数据类型: 整型:bigint int smallint tinyint 货币:money smallmoney 时间:datetime smalldatetime 位:bit (0,1) 字符串:char varchar text(一个字符表示8位) Nchar nvarchar ntext(一个字符表示16位) 差异:1. 字符串类型需要加长度。Char(4) text,ntext不需要加长度 2. char varchar的区别 Char是固定长度的,char(8) 存储了’abc’会在’abc’之前加5个空格 Varchar 是可变长的varchar(20) 存储了’abc’,长度就是3 3. 如何分离附加数据库 4. 对数据库的增删改查(操作的是表中的数据) T_sql:sql+sql server对标准的加强 Sql当中不区分大小写。 增(insert):insert into表名values(字段1的值,字段2的值……) insert into表名(字段1,字段2)values(字段1的值,字段2的值……)—插入部分数据,其他的字段可以不插入,是因为允许为空

相关主题