package bean
import java.sql.*
import java.util.ArrayList
import bean.UserBean
import bean.DBUtil
public class UserDAO{
public UserDAO() {
}
/*更新数据,通过传递许更新的对象以及SQL语句,对数据进行添加、删除或更新操作
*obj为实体类的对象,sql为SQL语句
*/
public boolean insertUser(UserBean ub){
boolean b=false
Connection conn=null
PreparedStatement stmt=null
String sql=null
try{
//插入一条记录
sql="insert into TUser values(user_sequence.nextval,?,?,?,?,?)"
//创建一个连接
conn=DBUtil.getConnection()
//创建PreparedStatement的对象
stmt=conn.prepareStatement(sql)
//给SQL语句内的"?"赋值
//stmt.setInt(1,ub.getUser_ID())
stmt.setString(1,ub.getMobile_Number())
stmt.setString(2,ub.getRoaming_Status())
stmt.setString(3,ub.getCom_Level())
stmt.setInt(4,ub.getCustomer_ID())
stmt.setInt(5,ub.getAccount_ID())
//返回执行更新操作后受影响的行数
int rst=stmt.executeUpdate()
if(rst!=0){
b=true
}
//关闭相关的连接
DBUtil.closeStatement(stmt)
DBUtil.closeConnection(conn)
}catch(SQLException se){
se.printStackTrace()
}catch(Exception e){
e.printStackTrace()
}
return b
}
/*修改一条数据
*直接调用insertUser()方法
*/
public boolean updateUser(UserBean ub){
boolean b=false
Connection conn=null
PreparedStatement stmt=null
String sql=null
try{
//插入一条记录
sql="update TUser set Mobile_Number=?,Roaming_Status=?,Com_Level=?,Customer_ID=?,Account_ID=? where User_ID="+ub.getUser_ID()
//创建一个连接
conn=DBUtil.getConnection()
//创建PreparedStatement的对象
stmt=conn.prepareStatement(sql)
//给SQL语句内的"?"赋值
//stmt.setInt(1,ub.getUser_ID())
stmt.setString(1,ub.getMobile_Number())
stmt.setString(2,ub.getRoaming_Status())
stmt.setString(3,ub.getCom_Level())
stmt.setInt(4,ub.getCustomer_ID())
stmt.setInt(5,ub.getAccount_ID())
//返回执行更新操作后受影响的行数
int rst=stmt.executeUpdate()
if(rst!=0){
b=true
}
//关闭相关的连接
DBUtil.closeStatement(stmt)
DBUtil.closeConnection(conn)
}catch(SQLException se){
se.printStackTrace()
}catch(Exception e){
e.printStackTrace()
}
return b
}
/*删除一条记录
*@返回boolean类型的标志,通过传递UserBean的实例对象,得到该对象的User_ID
*/
public boolean deleteUser(UserBean ub){
boolean b=false //测试变量,无实在意义
Connection conn=null
Statement stmt=null
String sql=null
int id=0
try{
id=ub.getUser_ID()
//删除记录为id的记录
sql="delete from TUser where User_ID="+id
//创建一个连接
conn=DBUtil.getConnection()
//创建PreparedStatement的对象
stmt=conn.createStatement()
//检测删除的对象是否存在
if(getUser(id)!=null&&getUser(id).getUser_ID()==id){
//返回执行更新操作后受影响的行数
int rst = stmt.executeUpdate(sql)
if (rst >0) {
b = true
}
}else{
System.out.println("此条记录不存在!")
}
//关闭相关的连接
DBUtil.closeStatement(stmt)
DBUtil.closeConnection(conn)
//捕获异常
}catch(SQLException se){
se.printStackTrace()
}catch(Exception e){
e.printStackTrace()
}
return b
}
/*查询数据/得到数据
*str为数据库对应的列名,sql为传入的SQL语句
*/
public UserBean getUser(int user_id){
Connection conn=null
Statement stmt=null
ResultSet rs=null
String sql=null
UserBean user=null
try{
//从数据库中查询User_ID值为user_id的记录
sql="select * from TUser where User_ID="+user_id
//创建一个连接
conn=DBUtil.getConnection()
//创建Statement的对象
stmt=conn.createStatement()
//实例化UserBean的一个对象
user =new UserBean()
//执行操作,返回一个结果集
rs=stmt.executeQuery(sql)
//从结果集中读取一条记录,并且将对应的属性值赋值给user
if(rs.next()){
//System.out.println(rs.getString("User_Address"))
user.setUser_ID(rs.getInt("User_ID"))
user.setMobile_Number(rs.getString("Mobile_Number"))
user.setRoaming_Status(rs.getString("Roaming_Status"))
user.setCom_Level(rs.getString("Com_Level"))
user.setCustomer_ID(rs.getInt("Customer_ID"))
user.setAccount_ID(rs.getInt("Account_ID"))
//System.out.println(user.getUser_ID())
}
//关闭相关的连接
DBUtil.closeResultSet(rs)
DBUtil.closeStatement(stmt)
DBUtil.closeConnection(conn)
//捕获异常
}catch(SQLException se){
se.printStackTrace()
}catch(Exception e){
e.printStackTrace()
}
//返回user对象
// System.out.println(user.getUser_ID())
return user
}
/*查询数据
*str为数据库对应的列名,sql为传入的SQL语句
*@返回一个数据列表
*/
public ArrayList getUsers(){
Connection conn=null
Statement stmt=null
ResultSet rs=null
String sql=null
UserBean user=null
ArrayList list=null
try{
//从数据库中查询User_ID值为user_id的记录
sql="select * from TUser"
//创建一个连接
conn=DBUtil.getConnection()
//创建Statement的对象
stmt=conn.createStatement()
list=new ArrayList()
//执行操作,返回一个结果集
rs=stmt.executeQuery(sql)
//从结果集中循环读取记录,并且将对应的属性值赋值给user
while(rs.next()){
//实例化UserBean的一个对象
user =new UserBean()
user.setUser_ID(rs.getInt("User_ID"))
user.setMobile_Number(rs.getString("Mobile_Number"))
user.setRoaming_Status(rs.getString("Roaming_Status"))
user.setCom_Level(rs.getString("Com_Level"))
user.setCustomer_ID(rs.getInt("Customer_ID"))
user.setAccount_ID(rs.getInt("Account_ID"))
//将user添加到list中
list.add(user)
}
//关闭相关的连接
DBUtil.closeResultSet(rs)
DBUtil.closeStatement(stmt)
DBUtil.closeConnection(conn)
//捕获异常
}catch(SQLException se){
se.printStackTrace()
}catch(Exception e){
e.printStackTrace()
}
//返回list对象
return list
}
}
********************与数据库的连接类DBUtil:
package bean
import java.sql.*
public class DBUtil {
static String serverName="localhost" //主机地址
static String sDBDriver="oracle.jdbc.driver.OracleDriver" //oracle驱动
static String dbInstance="cloud" //数据库的名称
static String sConnStr="jdbc:oracle:thin:@"+serverName+":1521:"+dbInstance//数据库的连接字符串
static String dbUser="system" //数据库的登陆名
static String userPwd="manager" //数据库的登陆密码
/*
*得到一个Connection对象
*@return java.sql.Connection
*/
public static Connection getConnection(){
Connection conn=null
try{
Class.forName(sDBDriver)
conn=DriverManager.getConnection(sConnStr,dbUser,userPwd)
}catch(ClassNotFoundException e){
e.printStackTrace()
}catch(SQLException se){
se.printStackTrace()
}
return conn
}
//关闭指定的结果集rs
public static void closeResultSet(ResultSet rs){
if(rs!=null){
try{
rs.close()
}catch(SQLException e){
e.printStackTrace()
}
}
}
//关闭指定的Statement
public static void closeStatement(Statement stmt){
if(stmt!=null){
try{
stmt.close()
}catch(SQLException e){
e.printStackTrace()
}
}
}
//关闭连接conn
public static void closeConnection(Connection conn){
if(conn!=null){
try{
conn.close()
}catch(SQLException e){
e.printStackTrace()
}
}
}
}
于基本数据类型量,按其取值是否可改变又分为常量和变量两种。在程序执行过程中,其值不发生改变的量称为常量,其值可变的量称为变量。它们可与数据类型结合起来分类。例如,可分为整型常量、整型变量、浮点常量、浮点变量、字符常量、字符变量、枚举常量、枚举变量。在程序中,常量是可以不经说明而直接引用的,而变量则必须先定义后使用。整型量包括整型常量、整型变量。
3.2.1常量和符号常量
在程序执行过程中,其值不发生改变的量称为常量。
?直接常量(字面常量):
?整型常量:12、0、-3;
?实型常量:4.6、-1.23;
?字符常量:‘a’、‘b’。
?标识符:用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。
?符号常量:用标示符代表一个常量。在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。
符号常量在使用之前必须先定义,其一般形式为: