本文目錄一覽:
java如何實現sql連接和查詢的代碼?
import java.sql.Connection。
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class DBCon {
//資料庫驅動對象
public static final String DRIVER=”oracle.jdbc.driver.OracleDriver”;
//資料庫連接地址(資料庫名)
public static final String URL=”jdbc:oracle:thin:@localhost:1521:orcl”;
//登陸名
public static final String USER=”FM”;
//登陸密碼
public static final String PWD=”FM”;
//創建資料庫連接對象
private Connection con=null;
//創建資料庫預編譯對象
private PreparedStatement ps=null;
//創建結果集
private ResultSet rs=null;
//創建數據源對象
public static DataSource source=null;
// //靜態代碼塊
// static{
//
// //初始化配置文件context
// try {
// Context context=new InitialContext();
// source=(DataSource)context.lookup(“java:comp/env/jdbc/webmessage”);
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//
//
// }
/**
* 獲取資料庫連接
*/
public Connection getCon(){
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
con=DriverManager.getConnection(URL,USER,PWD);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
}
// /**
// * 獲取資料庫連接
// */
// public Connection getCon(){
//
// try {
// con=source.getConnection();
// } catch (SQLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//
// return con;
// }
/**
* 關閉所有資源
*/
public void closeAll(){
if(rs!=null)
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(ps!=null)
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(con!=null)
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @param sql資料庫更新(增、刪、改) 語句
* @param pras參數列表(可傳,可不傳,不傳為NULL,以數組形式存在)
* @return 返回受影響都行數
*/
public int update(String sql,String… pras){
int resu=0;
con=getCon();
try {
ps=con.prepareStatement(sql);
for(int i=0;ipras.length;i++){
ps.setString(i+1,pras[i]);
}
resu=ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
closeAll();
}
return resu;
}
/**
* @param sql資料庫查詢語句
* @param pras參數列表(可傳,可不傳,不傳為NULL,以數組形式存在)
* @return 返回結果集
*/
public ResultSet query(String sql,String… pras){
con=getCon();
try {
ps=con.prepareStatement(sql);
if(pras!=null)
for(int i=0;ipras.length;i++){
ps.setString(i+1, pras[i]);
}
rs=ps.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rs;
}
}
java如何執行sql語句
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class xxxx {
public static void main(String[] args) {
Connection con = null ;
Statement stmt = null ;
try {
Class.forName(“com.mysql.jdbc.Driver”); //mysql為例 不一樣的資料庫所需的驅動包不一樣 連接語句略有不同
con = DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/資料庫名”, “root”, “密碼”);
stmt = con.createStatement();
String sql = “insert into info values (‘用戶’, ‘mima’, ‘piapiapia~’)”;
stmt.executeUpdate(sql);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(stmt != null) {
stmt.close();
stmt = null;
}
if (con != null) {
con.close();
con = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
怎麼用java連接SQL資料庫?
如何用java連接sql的資料庫 1、java資料庫操作基本流程 : java資料庫操作基本流程:取得資料庫連接 – 執行sql語句 – 處理執行結果 – 釋放資料庫連接
2、幾個常用的重要技巧:可滾動、更新的記錄集 、 批量更新 、事務處理1、取得資料庫連接1)用DriverManager取資料庫連接例子:String className,url,uid,pwd;
className = “oracle.jdbc.driver.OracleDriver”;
url = “jdbc:oracle:thin:@127.0.0.1:1521:orasvr;
uid = “system”;
pwd = “manager”;
Class.forName(className);
Connection cn = DriverManager.getConnection(url,uid,pwd);2)用jndi(java的命名和目錄服務)方式例子String jndi = “jdbc/db”;
Context ctx = (Context) new InitialContext().lookup(“java:comp/env”);
DataSource ds = (DataSource) ctx.lookup(jndi);
Connection cn = ds.getConnection(); //多用於jsp中2、執行sql語句1)用Statement來執行sql語句String sql;
Statement sm = cn.createStatement();
sm.executeQuery(sql); // 執行數據查詢語句(select)
sm.executeUpdate(sql); // 執行數據更新語句(delete、update、insert、drop等)statement.close();2)用PreparedStatement來執行sql語句String sql;
sql = “insert into user (id,name) values (?,?)”;
PreparedStatement ps = cn.prepareStatement(sql);
ps.setInt(1,xxx);
ps.setString(2,xxx);
…
ResultSet rs = ps.executeQuery(); // 查詢
int c = ps.executeUpdate(); // 更新3、處理執行結果查詢語句,返回記錄集ResultSet。更新語句,返回數字,表示該更新影響的記錄數。ResultSet的方法:1、next(),將游標往後移動一行,如果成功返回true;否則返回false。2、getInt(“id”)或getSting(“name”),返回當前游標下某個欄位的值。3、釋放連接。cn.close();一般,先關閉ResultSet,然後關閉Statement(或者PreparedStatement);最後關閉Connection可滾動、更新的記錄集1、創建可滾動、更新的StatementStatement sm=cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,
ResultSet.CONCUR_READ_ONLY);該Statement取得的ResultSet就是可滾動的2、創建PreparedStatement時指定參數PreparedStatemet ps=cn.prepareStatement(sql,
ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);ResultSet.absolute(9000);批量更新1、StatementStatement sm = cn.createStatement();
sm.addBatch(sql1);
sm.addBatch(sql2);
…
sm.executeBatch()一個Statement對象,可以執行多個sql語句以後,批量更新。這多個語句可以是delete、update、insert等或兼有2、PreparedStatementPreparedStatement ps = cn.preparedStatement(sql);
{
ps.setXXX(1,xxx);
…
ps.addBatch();
}
ps.executeBatch();一個PreparedStatement,可以把一個sql語句,變換參數多次執行,一次更新。事務的處理1、關閉Connection的自動提交cn.setAutoCommit(false);2、執行一系列sql語句要點:執行每一個新的sql語句前,上一次執行sql語句的Statement(或者PreparedStatemet)必須先closeStatement sm ;
sm = cn.createStatement(insert into user…);
sm.executeUpdate();
sm.close();sm = cn.createStatement(“insert into corp…);
sm.executeUpdate();
sm.close();3、提交cn.commit();
Java調用SQL存儲過程、事務
例示一個不帶參數的簡單存儲過程。多數存儲過程的功能比本例複雜多了,但這裡主要說明存儲過程的一些基本要點。如前面所述,不同DBMS定義存儲過程的語法是不同的。例如,有些DBMS使用begin
.
.
.
end或其他關鍵字指明存儲過程定義的開始和結束。在有些DBMS中,下面的SQL語句可創建一個存儲過程:
create
procedure
SHOW_SUPPLIERS
as
select
SUPPLIERS.SUP_NAME,
COFFEES.COF_NAME
from
SUPPLIERS,
COFFEES
where
SUPPLIERS.SUP_ID
=
COFFEES.SUP_ID
order
by
SUP_NAME
下面的代碼將SQL語句放到一個字元串中,然後賦給變數createProcedure以備後用:
String
createProcedure
=
“create
procedure
SHOW_SUPPLIERS
“
+
“as
“
+
“select
SUPPLIERS.SUP_NAME,
COFFEES.COF_NAME
“
+
“from
SUPPLIERS,
COFFEES
“
+
“where
SUPPLIERS.SUP_ID
=
COFFEES.SUP_ID
“
+
“order
by
SUP_NAME”;
下面的代碼段使用Connection對象con來創建Statement對象,用於把創建存儲過程的SQL語句發送給資料庫:
Statement
stmt
=
con.createStatement();
stmt.executeUpdate(createProcedure);
存儲過程SHOW_SUPPLIERS將作為一個可調用的資料庫對象在資料庫中編譯並存儲,調用時就像調用其他方法一樣。
java設置sql結果中文
java設置sql結果中文是亂碼。根據相關信息查詢結果顯示,java設置sql結果中文是亂碼,可以更改DriverManage,在後邊加上設置編碼即可解決。亂碼,指的是由於本地計算機在用文本編輯器打開源文件時,使用了不相應字符集而造成部分或所有字元無法被閱讀的一系列字元。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/191937.html