前段时间接触到jdbc连接数据库的相关知识,决定试一下,手头上没有数据库,于是在远程数据库上开了一个测试的用户,只赋与查询单张表的权限,然后再在Java中配置相关的参数:
package com.immoc.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.immoc.bean.Message;
/**
* 和message相关的数据库操作
*
*/
public class MessageDao {
/**
* 根据查询条件查询消息列表
*/
public List<Message> queryMessageList(String command,String description){
List<Message> messageList=new ArrayList<Message>();
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@ip:端口:SID";
Connection conn=DriverManager.getConnection(url,"账号","密码");
StringBuilder sql=new StringBuilder("select ID,COMMAND,DESCRIPTION,CONTENT from MESSAGE where 1=1");
List<String> paramList=new ArrayList<String>();
if(command!=null&&!"".equals(command.trim())){
sql.append("and COMMAND=?");
paramList.add(command);
}
if(description!=null&&!"".equals(description.trim())){
sql.append("and DESCRIPTION like '%'||?||'%'");
paramList.add(description);
}
PreparedStatement statement= conn.prepareStatement(sql.toString());
for(int i=0;i< paramList.size();i++){
statement.setString(i+1, paramList.get(i));
}
ResultSet rs=statement.executeQuery();
while(rs.next()){
Message message=new Message();
messageList.add(message);
message.setId(rs.getString("ID"));
message.setCommand(rs.getString("COMMAND"));
message.setDescription(rs.getString("DESCRIPTION"));
message.setContent(rs.getString("CONTENT"));
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return messageList;
}
}
在写jdbc的时候,
String url="jdbc:oracle:thin:@ip:端口:SID";
Connection conn=DriverManager.getConnection(url,"账号","密码");
这里没有定义url这个变量,而是直接写到了getConnection这个方法中,没有链接成功,然后还有SID这个地方需要写的是数据库的数据库名,但是我的数据库名不是这个名字,测试了下用的是SID的名字,成功了,关于相关的配置先写这些,后期有什么遗漏再补充