数据库进行
下面是一个从 mysql 数据库获取用户信息的例子,可以参考一下:
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importjava.util.ArrayList;
importjava.util.List;
//用户类,存储单个用户信息
classUser{
privateintid;
privateStringname;
publicUser(intid,Stringname){
this.id=id;
this.name=name;
}
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
@Override
publicStringtoString(){
return"User[id="+id+",name="+name+"]";
}
}
publicclassDemo1{
publicstaticvoidmain(String[]args)throwsClassNotFoundException,SQLException{
//本例使用mysql数据库,演示将数据库test的tb_users表中的用户信息
//放到List中
//加载数据驱动
Class.forName("com.mysql.jdbc.Driver");
//数据库连接字符串,此例数据库为test
Stringurl="jdbc:mysql://localhost:3306/test";
Stringuser="root"; //数据库用户名
Stringpassword=""; //数据库密码
//打开一个数据连接
Connectionconn=DriverManager.getConnection(url,user,password);
Statementstmt=conn.createStatement();
//获取表tb_users所有用户信息到结果集中
ResultSetrs=stmt.executeQuery("SELECTid,nameFROMtb_users");
//定义一个存放用户信息的List
List<User>users=newArrayList<>();
//提取用户信息,并将用户信息放入List
while(rs.next()){
//获取用户ID
intid=rs.getInt(1);
//获取用户名
Stringname=rs.getString(2);
users.add(newUser(id,name));
}
rs.close();
stmt.close();
conn.close();
//显示用户信息
for(Useru:users){
System.out.println(u);
}
}
}
② 软件开发数据库如何进行测试
比如:数据冗余,功能和性能方面存在的问题已经严重影响应用软件的使用。软件测试人员往往重视对软件功能和编码的测试,而忽略对软件性能,特别是数据库访问并发测试。因为,他们固有的思想中认为数据库设计存在问题对系统性能影响不大,或从根本上忽略了数据库在软件开发中的地位,直到出现了问题,才想到对数据库的测试,但往往也是仅仅通过对编码的测试工作中捎带对数据库进行一定的测试,这远远是不够的。目前,中铁网上订票系统在大用户同时在线订票中系统频频瘫痪,就是最好的佐证。 所以,在应用软件的测试工作中,应该将数据库作为一个独立的部分进行充分的测试,这样才可以得到应用软件所需要的性能优化的数据库。那么,应该对哪些内容进行测试,如何进行测试呢? 2、数据库设计的测试 数据库是应用的基础,其性能直接影响应用软件的性能。为了使数据库具有较好的性能,需要对数据库中的表进行规范化设计。规范化的范式可分为第一范式、第二范式、第三范式、BCNF范式、第四范式和第五范式。一般来说,逻辑数据库设计应满足第三范式的要求,这是因为满足第三范式的表结构容易维护,且基本满足实际应用的要求。因此,实际应用中一般都按照第三范式的标准进行规范化。但是,规范化也有缺点:由于将一个表拆分成为多个表,在查询时需要多表连接,降低了查询速度。故数据库设计的测试包括前期需求分析产生数据库逻辑模型和后期业务系统开发中的测试两部分(这里指的是后者),我在这里称为实体测试。 数据库是由若干的实体组成的,包括(表,视图,存储过程等),数据库最基本的测试就是实体测试,通过对这些实体的测试,可以发现数据库实体设计得是否充分,是否有遗漏,每个实体的内容是否全面,扩展性如何。 实体测试,可以用来发现应用软件在功能上存在的不足,也可以发现数据冗余的问题。经过测试,测试人员对有异议的问题要及时和数据库的设计人员进行沟通解决。 3、数据一致性测试 在进行实体测试后,应进一步检查下面的内容以保障数据的一致性: 3.1 表的主键测试根据应用系统的实际需求,对每个表的主键进行测试,验证是否存在记录不唯一的情况,如果有,则要重新设置主键,使表中记录唯一。 3.2 表之间主外键关系的测试数据库中主外键字段在名称,数据类型,字段长度上的一致性测试。 3.3 级联表,删除主表数据后,相应从报表数据应同时删除的问题例如学生表和学生成绩表,学生数据已经删除,成绩表中相应学生的成绩记录应同时删除。 3.4 存储过程和触发器的测试存储过程可以人工执行,但触发器不能人工处理,所以在对存储过程和触发器执行的过程中针对SQL SERVER2005及以上版本可以使用Microsoft SQL Server Profiler性能测试工具进行测试。 Microsoft SQL Server Profiler 是 SQL 跟踪的图形用户界面,用于监视数据库引擎或 Analysis Services 的实例。测试人员可以捕获有关每个事件的数据并将其保存到文件或表中供以后分析。例如:可以对生产环境进行监视,了解哪些存储过程由于执行速度太慢影响了性能。 4、数据库的容量测试 随着数据库系统的使用,数据量在飞速增长,如何在使用前对数据容量的增长情况进行初步估算,为最终用户提供参考,这在数据库使用和维护过程中,是非常重要的。可以通过对数据库设计中基本表的数据大小,和每天数据表的数据产生量进行初步估算。 记录数据量=各个字段所占字节数的总和表的数据量=记录数据量*记录数数据库大小=各表数据量的总和 当然,数据库的大小不仅仅只是基本表的大小,还有系统表,视图,存储过程等其它实体所占的容量,但最基本的数据是表的数据。另外,数据库的容量还包括数据库日志文件的容量,一般应预留数据库文件的2倍左右。 5、数据库的性能测试 应用软件除了功能外,很重要的一部分就是软件的性能,而对于数据库系统,数据库性能的好坏会直接影响应用软件的性能,这部分的测试,一般手工测试就显得无能为力了,这时就要借助自动化的测试软件,例如:DataFactory,DataFactory是一种强大的数据产生器,它允许开发人员和测试人员很容易产生百万行有意义的正确的测试数据库,该工具支持DB2、Oracle、Sybase、SQL Server数据库。这样,就可以模拟出应用软件长期使用后,海量数据存储的数据库的性能状况。从而尽早发现问题,进行数据库性能的优化。 这里要注意,进行性能测试的时候,一定要注意测试环境的一致性,包括:操作系统、应用软件的版本以及硬件的配置等,而且在进行数据库方面的测试的时候一定要注意数据库的记录数、配置等要一致,只有在相同条件下进行测试,才可以对结果进行比较。否则无法和用户对软件的性能的观点达成一致。 6、数据库的压力测试 说起测试,我们首先想到的就是软件正确性的测试,即常说的功能测试。软件功能正确仅是软件质量合格指标之一。在实际开发中,还有其它的非功能因素也起着决定性的因素,例如软件的响应速度。影响软件响应速度的因素有很多,有些是因为算法不够高效;还有些可能受用户并发数的影响。 在众多类型的软件测试中,压力测试正是以软件响应速度为测试目标,尤其是针对在较短时间内大量并发用户的访问时,软件的抗压能力。但压力测试往往是手工难以测试的,必须借助自动化测试工具。常用的压力测试有:Web测试、数据库测试等。 数据库在大多数软件项目中是不可缺少的,对于它进行压力测试是为了找出数据库对象是否可以有效地承受来自多个用户的并发访问。这些对象主要是:索引、触发器、存储过程和锁。通过对SQL语句和存储过程的测试,自动化的压力测试工具可以间接的反应数据库对象是否需要优化。 这些自动化的测试工具很多,各有特点,基于Java的项目可以使用JMeter,.Net项目可以采用.Net集成开发环境中提供的测试方案。 7、结束语 总之,在应用系统的测试中,把数据库应当作为独立的系统来测试,这无疑会为应用软件的质量增加可靠的保障,同时还必须结合应用软件进行集成测试,只有二者有机结合起来,才能最大限度的发挥数据库和应用软件的功能。
③ 如何进行数据库的维护,平时需要做些什么
数据库日常维护(参考) 数据库日常维护工作是系统管理员的重要职责。其内容主要包括以下几个部分: 一、备份系统数据 SYBASE 系统的备份与恢复机制保证了在系统失败时重新获取数据的可能性。SQL Server 提供了两种不同类型的恢复机制:一类是系统自动完成的恢复,这种措施在每次系统启动时都自动进行,保证了在系统瘫痪前完成的事务都写到数据库设备上,而未完成的事务都被回退;另一类是人工完成的恢复,这是通过 DUMP 和 LOAD 命令来执行人工备份和恢复工作。因此定期备份事务日志和数据库是一项十分重要的日常维护工作。 1、备份数据库 每一个数据库都应在创建之后卸出,从而提供一个装入基点。在此之后按排定的时间周期表卸出。比如每周五卸出数据库。对一般数据库系统卸出数据库周期建议为每周一次。 除了按计划周期卸出数据库之外,还需在每次运行没有日志的操作后卸出数据库。例如: ·每次强制地运行了 DUMP TRAN WITH NO_LOG (因为数据库的磁盘空溢出); ·每次用 sp_dboption 允许 select into/bulk 做快速拷贝,或用 SELECT INTO 命令创建一个永久性的表,或使用了 WRITETEXT 命令。 卸出数据库的命令为: DUMP DATABASE database_name TO mp_device database_name 是要卸出的数据库名称,mp_device 是卸出设备的名称。用系统过程 sp_helpdevice 可以获得设备的信息。 下面一条命令用来卸出数据库 my_db : DUMP DATABASE my_db TO db_bk_dev 2、备份事务日志 如果事务日志与数据库放在同一个设备上,则事务日志不应与数据库分开备份。master 数据库和小于 4M 的用户数据库就是这种情况。一般数据库系统的数据库和日志分别放在不同的设备上,因此,可以用 DUMP TRAN 命令单独备份日志。 备份事务日志的周期直接影响数据的恢复程度,因此建议每天备份。 备份事务日志的命令格式为: DUMP TRANsaction database_name [TO mp_device] [WITH TRUNCATE_ONLY|WITH NO_LOG|WITH NO_TRUNCATE] 其中 database_name 是要备份事务的数据库名称,mp_device 是备份设备名称,仅当包含了 WITH TRUNCATE_ONLY 或 WITH NO_LOG 子句时,才可以备份到设备。 注意:如果总是用 DUMP DATEBASE (备份数据库及其日志),而不用 DUMP TRAN ,事务日志将不会刷新,而变得非常庞大。 对于 master 数据库和小型数据库每次运行 DUMP DATEBASE 之后应当运行 DUMP TRANsaction 命令刷新日志 。 下面一条命令备份数据库 db160 的事务日志到备份设备上: DUMP TRANsaction db160 TO db_log_bk_dev WITH TRUNCATE_ONLY 3、备份数据库及其日志间的相互作用 在至少卸出一次数据库前,卸出事务日志是毫无意义的。下图显示了备份数据库及其日志间的关系 如果在星期二下午5:01出现非硬件故障,需要做的所有工作是装入磁带5(参见下一节:数据恢复),由于磁带5是下午5:00刚备份的,因此只有备份和装入之间的一分钟内的数据损失。 但是,如果在星期二下午4:49失效会怎么样呢?在这种情况下,要装入磁带1(在星期五下午5:00的卸出)。然后,依次装入磁带2,3以及4。这样,系统将恢复到星期二上午10:00点的状态,星期二的大部分工作丢失了。此例显示了经常卸出事务的重要性。 二、万一系统失败时恢复数据库系统 如果用户数据库存储的设备失效,从而数据库被破坏或不可存取,通过装入最新的数据库备份以及后来的事务日志备份可以恢复数据库。假设当前的事务日志存在于一个并没有毁坏的设备上,带着 WITH NO_TRUNCATE 选项的 DUMP TRANsaction 命令卸出它。 要恢复数据库按如下步骤去做: 1、如果日志存在于一个分离的设备上,用带着 NO_TRUN
④ 数据库怎么进行数据传输
方法/步骤
第一步,打开Navicat for MySQL软件,查看数据库book和student,对比数据库表,如下图所示:
⑤ 数据库如何备份
1、首先运行SQL。
⑥ 对数据库进行UPDATE操作
OleDbCommand cmd = new OleDbCommand("UPDATE personInformation SET name='" + Input[0].Trim() + "', isGuangZhou='"+ Input[1].Trim() + "', isSchoolWorker='"+ Input[2].Trim() + "',ty='"+ Input[3].Trim() +"', title='"+ Input[4].Trim() +"', isHaveOldHouse='"+ Input[5].Trim() +"', isHaveNewHouse='"+ Input[6].Trim() +"', isHaveHouseRecord='"+ Input[7].Trim() +"', isMateHaveOldHouse='"+ Input[8].Trim() +"', isMateHaveNewHouse='"+ Input[9].Trim() +"', isMateHaveHouseRecord='"+ Input[10].Trim() +"', mateCompany='"+ Input[11].Trim() +"', isMateGuangZhou='"+ Input[12].Trim() +"', isBuy='"+ Input[13].Trim() +"', perfectPlace='"+ Input[14].Trim() +"', perfectArea='"+ Input[15].Trim() +"', perfectType='"+ Input[16].Trim() +"', perfectPrice='"+ Input[17].Trim() +"', isRent='"+ Input[18].Trim() +"', rentTime='"+ Input[19].Trim() +"', perfectArea2='"+ Input[20].Trim() +"', perfectType2='"+ Input[21].Trim() +" 'WHERE id='" + id + "'", con)
ok :-->+" ' WHERE id='" + id + "'", con)
⑦ 怎样进行sql数据库的优化
1、数据库空间是个概述,在sqlserver里,使用语句 exec sp_spaceused 'TableName' 这个语句来查。
⑧ 如何对数据库进行操作
//此类为连接数据库并进行数据库的操作
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Conn {
private static Connection conn = null;
private static Statement st = null;
private static ResultSet rs = null;
//建立数据库的连接
public Conn(){
String url = "jdbc:sqlserver://localhost:1433;databaseName=ZYGX";
String user = "sa";
String password = "123";
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection(url, user, password);
st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 通过不同 的sql语句,得到相应Resultset结果集
public ResultSet getRs(String sql){
try{
rs= st.executeQuery(sql);
}catch(SQLException e){
e.printStackTrace();
}
return rs;
}
// 根据不同的sql语句,执行数据库的更新操作
public int updata(String sql){
int num=0;
try{
num = st.executeUpdate(sql);
}catch(SQLException e){
e.printStackTrace();
}
return num;
}
// 关闭数据库连接相应的资源
public void close(){
try{
if(rs!=null){
rs.close();
rs = null;
}
if(st!=null){
st.close();
st = null;
}
if(conn!=null){
conn.close();
conn = null;
}
}catch(SQLException e){
e.printStackTrace();
}
}
}
----------------------------------------------------------------------
//可以对button里添加动作按钮:
final JButton button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent e) {
Conn conn =new Conn();
String sql1="select * from aa where name='" name "' ";//按name值查找
ResultSet rs = conn.getRs(sql1);
try {
while(rs.next()){
int n=rs.getString("type");
}
} catch (SQLException e) {
e.printStackTrace();
}
String name=textField.getText();
String sql="update aa set tittle='" name "' ";//从aa表将title字段的值改成textField里的name值
String sql2 ="delete from aa where name='" name "'";//从aa表将按取得name的值删除该行数据
String sql3 = "insert into aa (name,uname) values ('" name "','"')"; //将name,uname值新增到aa表
if(conn.update(sql)==1){
System.out.print("修改成功");
}
if(conn.update(sql2)==1){
System.out.print("删除成功");
}
if(conn.update(sql3)==1){
System.out.print("新增成功");
}
}
});
⑨ 数据库如何进行查询,如何进行数据库测试
对于今天测试方面的提高一直很模糊,但最近整理好了思路。今年重点还是在数据库的测试方向上下手吧,因为我们公司的数据库中数据准确性非常重要,希望能提高自己对这一方面的工作经验吧。
前期一直进行数据库的测试,大约3个月。也总结了一些测试经验,拿出来与大家共享。
1、数据库日志查看测试法。这个方法是跟一个oracel DBA的老师学习的。呵呵。就是你在前台操作时,比如按一下新增按钮。新增一条数据,这是观察数据库中的日志,通过对日志的查看来明确数据的流向。从而来测试数据的正确性。当然这种方法需要测试人员本人对oracle数据库的日志很熟悉,水平很高,对数据表结构也有大体的了解。目前我还没有做到这一点,这是我今后的发展方向。
2、接口数据的测试方法。这个方法也是跟开发人员学习来的。当2个系统之间有接口时,接口传输中数据的正确性非常重要。这时候可以将系统1中与接口有关的数据提取出来形成临时表;将系统2中与接口有关的数据提取出来形成临时表。比对2个表的接口数据的一致性。通过这种方法可以发现接口数据是否一致。当然,直接在前台看2个系统的数据是否一致也是很好的方法之一。
3、数据测试的统计方法。这个方法可以同方法2组合使用,当一个系统试运行了一段时间后,可以统计系统一个月内或2个月内的数据,查看数据的正确性。因为由于数据流向的复杂性,导致我们测试数据正确性时很难能覆盖到所有的情况。这时就可以采用统计法来测试。
4、对报表参数的整理测试法。对每个前台页面需要呈现的或生成的参数,整理一个计算方法。即此参数与后台哪些表相关,是怎么生成的。我们测试人员需要对前台呈现的每个参数都明白他的数据流向,但是有时候在文档不起全的情况下,没办法明白整个的测试流程。所以需要我们自己进行每个参数的数据流向整理。
上面是总结的4条测试方法,可能还不齐全,希望大家一起来补充。还有一点是当页面查询没有任何数据时,这时候一定要弄清楚为什么没有任何数据,是不是有bug才没有数据的。好了,唠叨这么多。希望大家多提建议吧。