本文目錄一覽:
- 1、JSP如何調用.java文件進行對數據庫的操作?
- 2、java如何訪問和操作數據庫?請說詳細一點哦!小弟比較笨理解能比較差
- 3、Java中對數據庫操作實例
- 4、在Java中如何對數據庫中的數據進行操作?
- 5、java數據庫,怎麼在一個文件中連接數據庫,另一個文件中執行數據庫操作?
JSP如何調用.java文件進行對數據庫的操作?
這個問題問得不準確。
.java文件是死的,如何操作數據庫?必須編譯成.class可運行文件,在tomcat等網絡信息服務下面部署才能正常運行。正常運行後就可以和普通應用一樣操作數據庫了。
java如何訪問和操作數據庫?請說詳細一點哦!小弟比較笨理解能比較差
// 1. 註冊驅動
try {
Class.forName(“com.mysql.jdbc.Driver”);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// Mysql 的驅動
// 2. 獲取數據庫的連接
java.sql.Connection conn = java.sql.DriverManager.getConnection(
“jdbc:mysql://localhost/test?useUnicode=truecharacterEncoding=GBK”, “root”, null);
// 3. 獲取表達式
java.sql.Statement stmt = conn.createStatement();
// 執行插入數據的 SQL
stmt.executeUpdate(“insert into MyUser(username, password) values(‘JDBC 中文測試’, ‘密碼’)”);
// 4. 執行 SQL
java.sql.ResultSet rs = stmt.executeQuery(“select * from MyUser”);
// 5. 顯示結果集裏面的數據
while(rs.next()) {
System.out.println(rs.getInt(1));
System.out.println(rs.getString(“username”));
System.out.println(rs.getString(“password”));
System.out.println();
}
// 6. 釋放資源
rs.close();
stmt.close();
conn.close();
Java中對數據庫操作實例
可以以普通的jdbc連接的使用習慣來使用連接池。 數據庫連接池在編寫應用服務是經常需要用到的模塊,太過頻繁的連接數據庫對服務性能來講是一個瓶頸,使用緩衝池技術可以來消除這個瓶頸。我們可以在互聯網上找到很多關於數據庫連接池的源程序,但是都發現這樣一個共同的問題:這些連接池的實現方法都不同程度地增加了與使用者之間的耦合度。很多的連接池都要求用戶通過其規定的方法獲取數據庫的連接,這一點我們可以理解,畢竟目前所有的應用服務器取數據庫連接的方式都是這種方式實現的。但是另外一個共同的問題是,它們同時不允許使用者顯式的調用Connection.close()方法,而需要用其規定的一個方法來關閉連接。這種做法有兩個缺點:第一:改變了用戶使用習慣,增加了用戶的使用難度。首先我們來看看一個正常的數據庫操作過程:int executeSQL(String sql) throws SQLExceptionfinallycatch(Exception e)catch(Exception e)return res;}使用者在用完數據庫連接後通常是直接調用連接的方法close來釋放數據庫資源,如果用我們前面提到的連接池的實現方法,那語句conn.close()將被某些特定的語句所替代。第二:使連接池無法對之中的所有連接進行獨佔控制。由於連接池不允許用戶直接調用連接的close方法,一旦使用者在使用的過程中由於習慣問題直接關閉了數據庫連接,那麼連接池將無法正常維護所有連接的狀態,考慮連接池和應用由不同開發人員實現時這種問題更容易出現。綜合上面提到的兩個問題,我們來討論一下如何解決這兩個要命的問題。首先我們先設身處地的考慮一下用戶是想怎麼樣來使用這個數據庫連接池的。用戶可以通過特定的方法來獲取數據庫的連接,同時這個連接的類型應該是標準的java.sql.Connection。用戶在獲取到這個數據庫連接後可以對這個連接進行任意的操作,包括關閉連接等。通過對用戶使用的描述,怎樣可以接管Connection.close方法就成了我們這篇文章的主題。為了接管數據庫連接的close方法,我們應該有一種類似於鉤子的機制。例如在Windows編程中我們可以利用Hook API來實現對某個Windows API的接管。在JAVA中同樣也有這樣一個機制。JAVA提供了一個Proxy類和一個InvocationHandler,這兩個類都在java.lang.reflect包中。我們先來看看SUN公司提供的文檔是怎麼描述這兩個類的。public interface InvocationHandlerInvocationHandler is the interface implemented by the invocation handler of a proxy instance. Each proxy instance has an associated invocation handler. When a method is invoked on a proxy instance, the method invocation is encoded and dispatched to the invoke method of its invocation handler.SUN的API文檔中關於Proxy的描述很多,這裡就不羅列出來。通過文檔對接口InvocationHandler的描述我們可以看到當調用一個Proxy實例的方法時會觸發Invocationhanlder的invoke方法。從JAVA的文檔中我們也同時了解到這種動態代理機制只能接管接口的方法,而對一般的類無效,考慮到java.sql.Connection本身也是一個接口由此就找到了解決如何接管close方法的出路。首先,我們先定義一個數據庫連接池參數的類,定義了數據庫的JDBC驅動程序類名,連接的URL以及用戶名口令等等一些信息,該類是用於初始化連接池的參數,具體定義如下:public class ConnectionParam implements Serializable /** * 從連接池工廠中獲取指定名稱對應的連接池
在Java中如何對數據庫中的數據進行操作?
//此類為連接數據庫並進行數據庫的操作
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(“新增成功”);
}
}
});
java數據庫,怎麼在一個文件中連接數據庫,另一個文件中執行數據庫操作?
這是我做的2個javabean
第一個用於對物理數據庫地層的連接;
第二個用於用戶對數據庫的操作;
具體你需要的自己改
第一個:
package com.kiwwor.qq.beans;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* 數據庫操作的JavaBean類,用於對數據庫的查詢與更新的實現;
* 該類默認的連接的數據庫為本地數據庫,連接數據庫為”qq”;
* 該類主要為用戶一系列的數據操作提供底層服務。
* @author kiwwor
* @see UserBean
*/
public class Access {
//驅動程序類
private String driver = “com.microsoft.sqlserver.jdbc.SQLServerDriver”;
//連接數據庫url
private String connectionUrl=”jdbc:sqlserver://localhost:1433;DatabaseName=qq”;
//用戶名
private String user = “qq”;
//用戶密碼
private String password = “123258741”;
//數據庫連接對象
private Connection connection = null;
//數據庫對象
private Statement statement = null;
//數據集對象
private ResultSet resultSet = null;
public String getDriver() {
return driver;
}
public void setDriver(String driver) {
this.driver = driver;
}
public String getConnectionUrl() {
return connectionUrl;
}
public void setConnectionUrl(String connectionUrl) {
this.connectionUrl = connectionUrl;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Connection getConnection() {
return connection;
}
public void setConnection(Connection connection) {
this.connection = connection;
}
public Statement getStatement() {
return statement;
}
public void setStatement(Statement statement) {
this.statement = statement;
}
public ResultSet getResultSet() {
return resultSet;
}
public void setResultSet(ResultSet resultSet) {
this.resultSet = resultSet;
}
/**
* 獲取一個連接對象,默認連接對象本地數據庫qq。
* @return 連接是否成功
*/
public boolean createConnection() {
boolean b = false;
try {
Class.forName(driver);
connection = DriverManager.getConnection(connectionUrl, user, password);
b = true;
} catch (Exception e) {
e.printStackTrace();
}
return b;
}
/**
* 更新數據庫
* @param sql 更新的sql語句
* @return 更新是否成功
*/
public boolean update(String sql) {
boolean b =false;
try {
statement = connection.createStatement();
statement.execute(sql);
b = true;
} catch (Exception e) {
e.printStackTrace();
}
return b;
}
/**
* 執行查詢,將查詢的結果集給resultmentSet。
* @param sql 查詢的sql語句
*/
public void query(String sql) {
try {
statement = connection.createStatement();
resultSet = statement.executeQuery(sql);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 檢測結果集是否為空
* @return true為存在記錄
*/
public boolean next() {
boolean b = false;
try {
if (resultSet.next()) b = true;
} catch (Exception e) {
e.printStackTrace();
}
return b;
}
/**
* 獲得結果集中當前行columnLabel的記錄
* @param columnLabel
* @return 值記錄
*/
public String getValue(String columnLabel) {
String value = null;
try {
if (resultSet != null) value = resultSet.getString(columnLabel);
} catch (Exception e) {
e.printStackTrace();
}
return value;
}
/**
* 關閉連接對象
*/
public void closeConnection() {
try {
if (connection != null) connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 關閉數據庫對象
*/
public void closeStatement() {
try {
if (statement != null) statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 關閉結果集
*/
public void closeResultSet() {
try {
if (resultSet != null) resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 關閉數據連接對象,數據庫對象和數據結果集對象。
*/
public void closeAll() {
closeResultSet();
closeStatement();
closeConnection();
}
/**
* 測試該類函數。
* @param args
*/
public static void main(String[] args) {
Access db = new Access();
if (db.createConnection()) {
System.out.println(“測試數據庫連接成功.”);
String sql = “select id from [user]”;
db.query(sql);
int i = 1;
while (db.next()) {
String s = db.getValue(“id”);
System.out.println(“查詢用戶” + i + “: ” + s);
i++;
}
db.closeResultSet();
db.closeStatement();
db.closeConnection();
}
}
}
第二個:
package com.kiwwor.qq.beans;
/**
* 這是一個對用戶的數據查詢和更新的JavaBean類;
* 該類提供了對用戶的密碼認證,用戶註冊等方法。
* @author kiwwor
* @see Access
*/
public class UserBean {
/**
* 對用戶的登錄認證
* @param id 用戶名
* @param password 密碼
* @return 認證結果
*/
public boolean isValid(String id, String password) {
boolean b = false;
Access db =new Access();
if (db.createConnection()) {
String sql = “select * from [user] where id=” + id +”and password=” + password;
db.query(sql);
if (db.next()) {
b = true;
}
}
db.closeAll();
return b;
}
/**
* 用來查詢該用戶在服務器中是否存在
* @param id 用戶名
* @return 確認是否存在
*/
public boolean isExit(String id) {
boolean b = false;
Access db =new Access();
if (db.createConnection()) {
String sql = “select * from [user] where id=” + id;
db.query(sql);
if (db.next()) {
b = true;
}
}
db.closeAll();
return b;
}
/**
* 添加用戶,該方法必須在codeisExit(String id)/code確認的前提下使用,否則可能出現異常
* @param id 新增用戶名
* @param password 密碼
* @return 確認添加是否成功
*/
public boolean add(String id, String password) {
boolean b = false;
Access db =new Access();
if (db.createConnection()) {
String sql = “insert into [user] (id, password) values (” + id + “,” + password + “)”;
b = db.update(sql);
}
db.closeAll();
return b;
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/296113.html