javamysql庫-ag真人国际官网
mysql 是資料庫
java 是程序設計語言
不過mysql被oracle收購了
sun也被oracle收購了
mysql當然是需要單獨安裝的,它和java沒有必然聯系,是相互獨立的
mysql 與sql可以說也是相互獨立的。一個是dbms,一個dml,類型就完全不一樣
『貳』 java使用mysql資料庫要怎麼配置
需要,個人覺得jdbc 是比其他的方便
舉例來說:
我用的java的編輯器是jcreator pro 資料庫為 mysql
那麼你只需在mysql官方網站上下載一個windows 的mysqljdbc 然後把解壓到
jdk路徑下的jre下的ext中 然後在jcreator pro中"配置"菜單下的jdk設置中編輯添加下載來的mysql_jdbc.rar的位元組碼文件 即可用了
『叄』 java如何訪問資料庫(java訪問mysql資料庫)
java可以使用jdbc訪問資料庫,也可以使用各類orm框架訪問資料庫,但這些框架最終還是通過jdbc訪問資料庫,它們只是封裝了資料庫操作,而使得開發者可以減少這部分消耗。因此,本文只講解jdbc訪問方式。
jdbc訪問一般分為如下流程:
1、載入jdbc驅動程序:
在連接資料庫之前,首先要載入想要連接的資料庫的驅動到jvm(java虛擬機),這通過java.lang.class類的靜態方法forname(stringclassname)實現。
例如:
try{
//載入mysql的驅動類
class.forname("com.mysql.jdbc.driver");
}catch(e){
system.out.println("找不到驅動程序類,載入驅動失敗!");
e.();
}
成功載入後,會將driver類的實例注冊到類中。
2、提供jdbc連接的url
連接url定義了連接資料庫時的協議、子協議、數據源標識。
書寫形式:協議:子協議:數據源標識
協議:在jdbc中總是以jdbc開始
子協議:是橋連接的驅動程序或是資料庫管理系統名稱。
數據源標識:標記找到資料庫來源的地址與連接埠。
例如:(mysql的連接url)
jdbc:mysql://localhost:3306/test?useunicode=true&=gbk;
useunicode=true:表示使用unicode字元集。如果設置為
gb2312或gbk,本參數必須設置為true。=gbk:字元編碼方式。
3、創建資料庫的連接
要連接資料庫,需要向java.sql.請求並獲得connection對象,該對象就代表一個資料庫的連接。
使用的(stringurl,stringusername,stringpassword)方法傳入指定的欲連接的資料庫的路徑、資料庫的用戶名和密碼來獲得。
例如:
//連接mysql資料庫,用戶名和密碼都是root
stringurl="jdbc:mysql://localhost:3306/test";
stringusername="root";
stringpassword="root";
try{
connectioncon=
.(url,username,password);
}catch(se){
system.out.println("資料庫連接失敗!");
se.();
}
4、創建一個statement
要執行sql語句,必須獲得java.sql.statement實例,statement實例分為以下3種類型:
1、執行靜態sql語句。通常通過statement實例實現。
2、執行動態sql語句。通常通過實例實現。
3、執行資料庫存儲過程。通常通過實例實現。
具體的實現方式:
statementstmt=con.();
preparedstatementpstmt=con.preparestatement(sql);
callablestatementcstmt=con.preparecall("{calldemosp(?,?)}");
5、執行慧轎sql語句
statement介面提供了三種執行sql語句的方法:executequery、executeupdate和execute
1、resultsetexecutequery(stringsqlstring):執行查詢資料庫的sql語句,返回一個結果集(resultset)對象。
2、intexecuteupdate(stringsqlstring):用於執行insert、update或delete語句以及sqlddl語句,如:createtable和droptable等
3、execute(sqlstring):用於執行返回多個結果集、多個更新計數或二者組合的語句。
具芹尺體實現的代碼:
resultsetrs=stmt.executequery("select*from...");
introws=stmt.executeupdate("insertinto...");
booleanflag=stmt.execute(stringsql);
6、處理結果
兩種情況:
1、執行更新返回的是本次操作影響到的記錄數。
2、執行查詢返回的結果是一個resultset對象。
resultset包含符合sql語句中條件的所有行,並且它通過一套get方法提嫌碧高供了對這些行中數據的訪問。
使用結果集(resultset)對象的訪問方法獲取數據:
while(rs.next()){
stringname=rs.getstring("name");
stringpass=rs.getstring(1);//此方法比較高效(列是從左到右編號的,並且從列1開始)
}
7、關閉jdbc對象
操作完成以後要把所有使用的jdbc對象全都關閉,以釋放jdbc資源,關閉順序和聲明順序相反:
1、關閉記錄集
2、關閉聲明
3、關閉連接對象
if(rs!=null){//關閉記錄集
try{
rs.close();
}catch(sqlexceptione){
e.printstacktrace();
}
}
if(stmt!=null){//關閉聲明
try{
stmt.close();
}catch(sqlexceptione){
e.printstacktrace();
}
}
if(conn!=null){//關閉連接對象
try{
conn.close();
}catch(sqlexceptione){
e.printstacktrace();
}
}
『肆』 java是怎麼連接mysql資料庫的
1、java連接mysql資料庫需要有一個驅動jar包
例如:mysql-connector-java-5.1.26-bin.jar,該驅動jar可以自行網路搜索最新包下載放在項目的lib目錄下即可。
2、連接代碼如下
package.test.jsp;
importjava.sql.connection;
importjava.sql.drivermanager;
importjava.sql.resultset;
importjava.sql.sqlexception;
importjava.sql.statement;
importjavax.naming.spi.dirstatefactory.result;
publicclassdbconnection{
privatestaticconnectionconn;
publicdbconnection(){
stringdrivername="com.mysql.jdbc.driver";
stringusername="root";
stringurl="jdbc:mysql://localhost/jsptest?useunicode=true&characterencoding=utf-8";
stringpassword="";
//載入驅動
try{
class.forname(drivername);
}catch(classnotfoundexceptione){
system.out.println("驅動載入失敗!");
e.printstacktrace();
}
//建立連接
try{
conn=drivermanager.getconnection(url,username,password);
}catch(sqlexceptione){
system.out.println("資料庫連接失敗!");
e.printstacktrace();
}
}
//getresultset
publicresultsetgetresultset(stringsql)
{
resultsetrs=null;
//statemanage
try{
statementst=conn.createstatement();
rs=st.executequery(sql);
}catch(sqlexceptione){
system.out.println("狀態管理器創建失敗");
e.printstacktrace();
}
returnrs;
}
//dml
publicintdml(stringsql)
{
intcount=-1;
try{
statementstatement=conn.createstatement();
count=statement.executeupdate(sql);
}catch(sqlexceptione){
system.out.println("狀態管理器創建失敗");
e.printstacktrace();
}
returncount;
}
}
3、可以新建service類來調用連接類裡面的方法,實現自己所需用的功能。
『伍』 java連接mysql資料庫jar包怎麼導入
java連接mysql資料庫jar包導入:
1.將所有的jar包都是放到web工程lib目錄下,mysql-connector-java-x.x-bin.jar也是一樣,把該jar包拷貝到lib目錄下即可
2用jdbc直接鏈接mysql代碼如下
public static void main(string[] args) throws sqlexception {
drivermanager.registerdriver(new com.mysql.jdbc.driver());
connection conn = drivermanager.getconnection("jdbc:mysql://localhost:3306/day15", "root", "123456");
system.out.println(conn.getclass().getname());
statement stmt = conn.createstatement();
resultset rs = stmt.executequery("select id,name,password,email,birthday from users");
while (rs.next()) {
system.out.println("-------------------------");
system.out.println(rs.getobject("id"));
system.out.println(rs.getobject("name"));
system.out.println(rs.getobject("password"));
system.out.println(rs.getobject("email"));
system.out.println(rs.getobject("birthday"));
}
rs.close();
stmt.close();
conn.close();
}
『陸』 java是怎麼連接mysql資料庫的
方法/步驟
1、java要連接資料庫,那麼首先你必須安裝mysql資料庫
5、下面,我們來編寫.java文件來演示一下如何訪問mysql資料庫。
import java.sql.*;
public class jdbctest {
public static void main(string[] args){
// 驅動程序名 string driver = "com.mysql.jdbc.driver";
// url指向要訪問的資料庫名scutcs string url = "jdbc:mysql://127.0.0.1:3306/scutcs";
// mysql配置時的用戶名 string user = "root"; // mysql配置時的密碼 string password = "root";
try { // 載入驅動程序 class.forname(driver);
// 連續資料庫 connection conn = drivermanager.getconnection(url, user, password);
if(!conn.isclosed()) system.out.println("succeeded connecting to the database!");
// statement用來執行sql語句 statement statement = conn.createstatement();
// 要執行的sql語句 string sql = "select * from student";
// 結果集 resultset rs = statement.executequery(sql);
while(rs.next()) // 選擇sname這列數據 name = rs.getstring("sname
// 輸出結果 system.out.println(rs.getstring("sno") " " name); }
rs.close(); conn.close();
} catch(classnotfoundexception e) {
system.out.println("sorry,can`t find the driver!"); e.printstacktrace();
} catch(sqlexception e) {
e.printstacktrace();
} catch(exception e) {
e.printstacktrace();
}}}
注意事項
環境必須配置正確
『柒』 如何連接java和mysql資料庫
當然,首先要安裝有jdk(一般是jdk1.5.x)。然後安裝mysql,這些都比較簡單,具體過程就不說了。配置好這兩個環境後,下載jdbc驅動mysql-connector-java-5.0.5.zip(這個是最新版的)。然後將其解壓縮到任一目錄。我是解壓到d盤,然後將其目錄下的mysql-connector-java-5.0.5-bin.jar加到classpath里,具體如下:「我的電腦」->「屬性」->「高級罩賀答」->「環境變數」,在系統變數那裡編輯classpath,將d:mysql-connector-java-5.0.5mysql-connector-java-5.0.5-bin.jar加到最後,在加這個字元串前要加「;」,以與前一個classpath區分開。然後確定。
環境配置好了,很簡單。現在,先配置mysql,設其用戶名為「root」,密碼為「root」。在命令行或用一個sql的前端軟體創建database。
我是用sqlyog的前端軟體來創建database的。
先創建資料庫:
createdatabasescutcs;
接著,創建表:
createtablestudent
(
snochar(7)notnull,snamevarchar(8)notnull,sexchar(2)notnull,bdatedatenotnull,heightdec(5,2)default000.00,primarykey(sno)
);
然後插入數據,可以用sql語句insertinto<表名>values(value1,value2,...);
也可以用sqlyog來操作
好了,創建好了。
下面,我們來編寫.java文件來演示一下如何訪問mysql資料庫。
importjava.sql.*;
publicclassjdbctest{
publicstaticvoidmain(string[]args){
//驅動程序名
stringdriver="com.mysql.jdbc.driver";
//url指向要訪問的資料庫名scutcs
stringurl="jdbc:mysql://127.0.0.1:3306/scutcs";
//mysql配置時的用戶名
stringuser="root";
//mysql配置時的密碼
stringpassword="root";
try{
//載入驅動程序
class.forname(driver);
//連續資料庫
connectionconn=.(url,user,password);
if(!conn.isclosed())
system.out.println("!");
//statement用來執行sql語句
statementstatement=conn.();
//要執行的sql語句
stringsql="select*fromstudent";
//結果集
resultsetrs=statement.(sql);
system.out.println("-----------------");
system.out.println("執行結果如下所示:");
system.out.println("-----------------");
system.out.println("學號"" ""姓名");
system.out.println("-----------------");
stringname=null;
while(rs.next()){
//選擇sname這列數據
name=rs.getstring("sname");
/*何問起hovertree*/
//首先使拍派用iso-8859-1字元集將name解碼為位元組序列並將結果存儲新的位元組數組中。
//然後使用gb2312字元集解碼指定的位元組數組物慧
name=newstring(name.getbytes("iso-8859-1"),"gb2312");
//輸出結果
system.out.println(rs.getstring("sno")" "name);
}
rs.close();
『捌』 java中怎麼連接mysql資料庫
java鏈接mysql資料庫和鏈接其他資料庫, 基本都是一樣的套路
准備工作:
1: 資料庫驅動. 導入項目
2: 啟動mysql服務
編碼工作:
//1.注冊驅動
class.forname("com.mysql.jdbc.driver");
//2.連接資料庫
connectionconn=drivermanager.getconnection(db_url,name,pswd);
//資料庫地址,用戶名,密碼
//3.准備執行sql語句
statementstat=conn.createstatement();
『玖』 java如何實現對mysql資料庫的行鎖
下面通過一個例子來說明
場景如下:
用戶賬戶有餘額,當發生交易時,需要實時更新余額。這里如果發生並發問題,那麼會造成用戶余額和實際交易的不一致,這對公司和客戶來說都是很危險的。
那麼如何避免:
網上查了下,有以下兩種方法:
1、使用悲觀鎖
當需要變更余額時,通過代碼在事務中對當前需要更新的記錄設置for update行鎖,然後開始正常的查詢和更新操作
這樣,其他的事務只能等待該事務完成後方可操作
當然要特別注意,如果使用了spring的事務註解,需要配置一下:
在指定代碼處添加事務註解
@transactional
@override
public boolean increasebalancebylock(long userid, bigdecimal amount)
throws validateexception {
long time = system.currenttimemillis();
//獲取對記錄的鎖定
userbalance balance = userbalancedao.getlock(userid);
logger.info("[lock] start. time: {}", time);
if (null == balance) {
throw new validateexception(
validateerrorcode.errorcode_balance_notexist,
"user balance is not exist");
}
boolean result = userbalancedao.increasebalancebylock(balance, amount);
long timeend = system.currenttimemillis();
logger.info("[lock] end. time: {}", timeend);
return result;
}
mybatis中的鎖定方式,實際測試該方法確實可以有效控制,不過在大並發量的情況下,可能會有性能問題吧
2、使用樂觀鎖
這個方法也同樣可以解決場景中描述的問題(我認為比較適合並不頻繁的操作):
設計表的時候增加一個version(版本控制欄位),每次需要更新余額的時候,先獲取對象,update的時候根據version和id為條件去更新,如果更新回來的數量為0,說明version已經變更
需要重復一次更新操作,如下:sql腳本
update user_balance set balance = #{balance,jdbctype=decimal},version = version 1 where id = #{id,jdbctype=bigint} and version = #{version,jdbctype=bigint}
這是一種不使用資料庫鎖的方法,解決方式也很巧妙。當然,在大量並發的情況下,一次扣款需要重復多次的操作才能成功,還是有不足之處的。不知道還有沒有更好的方法。