A. java中一张表必须有个对应的吗
DAO 封装 sql 语句,而不是表。
一个 DAO 方法应对应一个 SQL 语句。所以理论上一个表一个 DAO,所有对其操作都放在里面。
DAO 并不是一个具体的类,所有封装 SQL 语句的东西都可以视为 DAO,比如 MyBatis 的 Mapper,和 Spring 的 Repository。
多表连接的情况,DAO 方法返回什么你就放在哪个类里面。
B. service层执行层传递过来的sql语句会破坏三层结构吗
DAO是底层与数据库直接交互的部分,serivce是又对DAO进行了一次封装。而service是暴露给action的部分。aciton里面调用service,service调用DAO。这样。
C. JAVA如何向SQL数据库中插入记录(封装字段,调用构造方法,详细点),谢谢!
具体需要这个几个类,数据库连接类,实现类,service实现类,action类(struts框架),还有页面
D. JAVA开发在后台DAO层查找语句时,用sql好还是hql好
当然用hql,hql将sql已经封装成为对象了。如果你需要保存一个学生,你只需要save一个学生对象就行了。
而sql你需要操作一大堆!
www.cao055.com
E. 为什么要把sql放在中来完成有什么好处
不会暴露数据库的结构,相对安全些,并且将sql语句单独放在中,项目的结构也清晰
F. 如何写一个类方法来实现java对mysql数据库的增删改查
package basic;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBC {
public void findAll() {
try {
// 获得数据库驱动
//由于长时间不写,驱动名和URL都忘记了,不知道对不对,你应该知道的,自己改一下的哈
String url = "jdbc:oracle:thin:@localhost:1521:XE";
String userName = "system";
String password = "system";
Class.forName("oracle.jdbc.driver.OracleDriver");
// 创建连接
Connection conn = DriverManager.getConnection(url, userName,
password);
// 新建发送sql语句的对象
Statement st = conn.createStatement();
// 执行sql
String sql = "select * from users";
ResultSet rs = st.executeQuery(sql);
// 处理结果
while(rs.next()){
//这个地方就是给你的封装类属性赋值
System.out.println("UserName:"+rs.getString(0));
}
// 关闭连接
rs.close();
st.close();
conn.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void delete(){
try {
//步骤还是那六个步骤,前边的两步是一样的
String url = "jdbc:oracle:thin:@localhost:1521:XE";
String userName = "system";
String password = "system";
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(url,userName,password);
//这里的发送sql语句的对象是PreparedStatement,成为预处理sql对象,因为按条件删除是需要不定值的
String sql = "delete from users where id = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(0, 1);
int row = ps.executeUpdate();
if(row!=0){
System.out.println("删除成功!");
}
// 关闭连接
rs.close();
st.close();
conn.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我只写了查询和删除,添加、修改和删除非常之像,这是因为查询对数据库没有改动,而增删改都对数据库进行了修改,所以这三个非常像……呵呵,你自己看着办吧
G. Dao层到底是做什么的service和Dao层有什么关系说得具体一些。
Dao层是和数据库打交道的,Service层会封装具体的业务。有点抽象..
e.g.
用户管理系统
封装了用户的增删改查。而业务上要求批量删除用户,Service就可以封装出一个批量删除用户的功能,但是实现只是循环调用的单个删除
@Trascational
public
void
batchDel(List<User>
ls){
for(int
i=0;i<ls.size();i++){
.del((User)ls.get(i));
}
}
看了上面的例子应该明白了吧,Service封装具体的业务,只是封装基本的数据库元操作。这样就可以做到尽可能的“轻”,而Service又避免了与具体数据库的关联。当系统要迁移到其他数据库的时候,只需要实现一个相应的就可以了!
H. java用Dao访问数据库,如何执行sql语句
你说的DAO是 做的一层专门负责数据库操作的逻辑层,具体你是hibernate,ibatis,jdbc你没说,所以不便于回答。
用的hibernate的话 getSession.update(String sql,Object params);
I. 如何用Dao方式连接 SQL Server数据库
你用的什么语言啊?
这个是VC++的
*****你说的是MFC的数据库访问类——class CDaoDatabase,这个类确实有Create()和Open()两个成员函数,不过前者的功能是新建一个数据库文件,而且只能是ACCESS文件(*.mdb),只有Open()能够连接一个现有的SQL数据库文件。
*****
*****连接代码样例:
CDaoDatabase dbSQL(); //括号必须有,因为它有一个引用参数,引用目标是class CDaoWorkspace的一个对象,这个参数默认是NULL
CString strDBPath("");//连接SQL时为空,连接ACCESS时为文件路径
CString strDBConn("driver={SQL Server};server=MySqlServer; uid=MyUserName;pwd=MyPassword;database=你的SQL数据库文件" );
//连接SQL时这样设置,连接ACCESS时此参数为空
dbSQL.Open( strDBPath,
FALSE, FALSE,
strDBConn
);
*****
*****另外,如楼上所言,DAO最初就是为ACCESS设计的。数据源只是一个适配器,让DAO能够扩展其功能连接其它数据库。建议改用ADO,ADO功能非常完善,而且简单易用。ADO采用COM组件技术,它提供了一套完全与开发平台无关的类库。也就是说可以不用MFC,可以在不同开发环境,多做开发语言中使用。
J. jsp,Action,service,,sql是怎么传值的
Dao层中主要是负责对数据库的操作,比如(增删改查),Service实际上是一个接口,是对Dao层的一次封装,Action则是调用service接口的,jsp从页面获取数据给Action层进行处理,Action层将数据通过service层传递给Dao层,从而实行对数据库的处理。