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層,從而實行對資料庫的處理。