java對mysql資料庫的操作
第1步 獲取Java與MySQL的連接器
第2步 將下載的包存放在自己機器上jdk安裝目錄下面的jre目錄下面的lib目錄下面的ext目錄中,在程序中導入與資料庫操作相關的對象
import java.sql.Connection; //導入資料庫連接對象
import java.sql.DriverManager; //導入資料庫驅動管理對象
import java.sql.ResultSet; //導入數據記錄集對象
import java.sql.SQLException; //導入數據SQL操作異常對象
import java.sql.Statement; //導入SQL操作介面對象
第3步:在程序中寫入如下內容
String url; //連接資料庫的字元串
String sql; //執行數據sql查詢操作的字元串
Connection conn; //資料庫連接變數
Statement st; //資料庫操作對象
ResultSet rs; //數據記錄集對象
url = "jdbc:mysql://localhost:3306/test?user=root&password="; //在程序中只要修改這句,就可以實現資料庫連接
try {
conn = DriverManager.getConnection(url);
st = conn.createStatement();
sql = "select * from test"; //只要修改這句,就可以實現各種查詢操作
rs=st.executeQuery(sql); //執行數據查詢
while(rs.next())
{
System.out.println(rs.getString(1)); //獲得數據表test中第1個欄位的數據,該欄位為字元串類型
System.out.println(rs.getString(2)); //獲得數據表test中第2個欄位的數據,該欄位為字元串類型
}
rs.close(); //關閉數據記錄集
conn.close(); //關閉資料庫連接
} catch (SQLException e) {
System.out.println("Error:"+e.toString()+e.getMessage());
}
⑵ java如何操作mysql資料庫
具體報什麼錯誤啊,你的包有沒有導入進去啊?
publicConnectiongetConnection(){try{Class.forName("com.mysql.jdbc.Driver");Stringurl="jdbc:mysql://localhost:3306/test";Stringuser="root";StringpassWord="";conn=DriverManager.getConnection(url,user,passWord);if(conn!=null){System.out.println("資料庫連接成功");}}catch(Exceptione){e.printStackTrace();}returnconn;}
⑶ 如何在Java程序中訪問mysql資料庫中的數據並進行簡單的操作
參考代碼:
package 資料庫編程;
import java.sql.*;
public class 資料庫連接 {
public static void main(String[] args) throws SQLException{
//1.載入驅動程序
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//2.創建與DB資料庫的連接
//連接字元串
String url="jdbc:mysql://192.168.1.101:3306/java資料庫?user=root&password=humin";
Connection con=DriverManager.getConnection(url);
//進行讀寫
if(!con.isClosed()){
System.out.print("歡迎訪問資料庫!\n想做什麼啊………………\n");
Statement st=con.createStatement();
ResultSet rs= st.executeQuery("select * from stu");
while(rs.next()){
System.out.print( rs.getString("stuid")+","+rs.getString("name")+","+rs.getString("sex")+","+rs.getString("age")+","+rs.getString("address")+","+rs.getString("tel")+"\n");
}
}
//關閉資料庫
con.close();
}
}
⑷ 通過java代碼如何實現對mysql資料庫進行創建新的資料庫的操作
1 import java.sql.Connection;
2 import java.sql.DriverManager;
3 import java.sql.ResultSet;
4 import java.sql.SQLException;
5 import java.sql.Statement;
6
7 public class CreateDataSource {
8
9 /**
10 * @param args
11 */
12 public static void main(String[] args) {
13 // TODO Auto-generated method stub
14 String database = "test2";
15 new CreateDataSource().getConn(database);
16 }
17
18 String mysqlDriver = "com.mysql.jdbc.Driver";
19 String url = "jdbc:mysql://localhost:3306/test1";
20 String newUrl = "jdbc:mysql://localhost:3306/";
21 String username = "root";
22 String password = "root";
23 Connection conn = null;
24 Connection newConn = null;
25
26 public Connection getConn(String database) {
27
28 try {
29 Class.forName(mysqlDriver);
30 } catch (ClassNotFoundException e) {
31 // TODO Auto-generated catch block
32 e.printStackTrace();
33 }
34 try {
35 String tableSql = "create table t_user (username varchar(50) not null primary key,"
36 + "password varchar(20) not null ); ";
37 String databaseSql = "create database " + database;
38
39 conn = DriverManager.getConnection(url, username, password);
40 Statement smt = conn.createStatement();
41 if (conn != null) {
42 System.out.println("資料庫連接成功!");
43
44 smt.executeUpdate(databaseSql);
45
46 newConn = DriverManager.getConnection(newUrl + database,
47 username, password);
48 if (newConn != null) {
49 System.out.println("已經連接到新創建的資料庫:" + database);
50
51 Statement newSmt = newConn.createStatement();
52 int i = newSmt.executeUpdate(tableSql);//DDL語句返回值為0;
53 if (i == 0) {
54 System.out.println(tableSql + "表已經創建成功!");
55 }
56 }
57 }
58
59 } catch (SQLException e1) {
60 // TODO Auto-generated catch block
61 e1.printStackTrace();
62 }
63 return conn;
64 }
65 }
⑸ 怎麼在java中操作mysql資料庫
1.安裝好jre環境和和jdk,設置好環境變數,很基礎,網上教程很多;
2.安裝mysql資料庫,不用設置數據源和環境變數,只是安裝好就可以,具體過程見網上教程,有時候不好安裝,可能是因為之前安裝沒有卸載干凈等原因,多查一查怎麼弄,多試一試就成功了;
3.為了方便操作資料庫,為mysql安裝一個可視化界面Navicat,安裝過程超級簡單,使用也超級簡單,傻瓜操作;
4.怎麼連接java和mysql呢,這個搞了好久,網上下載一個壓縮包mysql-connector-java-5.0.8.zip,解壓,將其中的mysql-connector-java-5.0.8-bin.jar文件復制一份粘貼在C:\Program
Files\Java\jre7\lib\ext目錄下,也就是放在jre\lib\ext下就行;
5.接下來還要設置一次環境變數,第4步中的壓縮包解壓後,將解壓後文件中mysql-connector-java-5.0.8-bin.jar添加到環境變數classpath中;
⑹ java程序中如何實現對mysql資料庫中表的鎖定
方法1:用mysql命令鎖住表.
publicvoidtest(){
Stringsql="locktablesaa1write";
//或Stringsql="locktablesaa1read";
//如果想鎖多個表locktablesaa1read,aa2write,.....
Stringsql1="select*fromaa1";
Stringsql2="unlocktables";
try{
this.pstmt=conn.prepareStatement(sql);
this.pstmt1=conn.prepareStatement(sql1);
this.pstmt2=conn.prepareStatement(sql2);
pstmt.executeQuery();
pstmt1.executeQuery();
pstmt2.executeQuery();
}catch(Exceptione){
System.out.println("異常"+e.getMessage());
}
}
對於read lock 和 write lock官方說明:
1.如果一個線程獲得一個表的READ鎖定,該線程(和所有其它線程)只能從該表中讀取。
如果一個線程獲得一個表的WRITE鎖定,只有保持鎖定的線程可以對表進行寫入。
其它的線程被阻止,直到鎖定被釋放時為止。
2.當您使用LOCK TABLES時,您必須鎖定您打算在查詢中使用的所有的表。
雖然使用LOCKTABLES語句獲得的鎖定仍然有效,但是您不能訪問沒有被此語句鎖定的任何的表。
同時,您不能在一次查詢中多次使用一個已鎖定的表——使用別名代替,
在此情況下,您必須分別獲得對每個別名的鎖定。
對與read lock 和 write lock個人說明:
1.read lock 和 write lock 是線程級(表級別).
2.在同一個會話中加了read lock鎖. 只能對這個表進行讀操作.對這個表以外的任何錶都無法進行增、刪、改、查的操作.
但是在不同會話中,只能對加了read lock的表進行讀操作.但可以對read lock以外的表進行增、刪、改、查的操作.
3.在同一個會話中加了write lock鎖.只能對這個表進行讀、寫操作.對這個表以外的任何錶都無法進行增、刪、改、查的操作.
但是在不同會話中,無法對加了write lock的表進行讀、寫操作.但可以對write lock以外的表進行增、刪、改、查的操作.
4.如果表中使用了別名.(SELECT * FROM aa1 AS byname_table)
在對aa1加鎖時,必須把別名加上去(lock tables aa1 as byname_table read)
在同一個會話中.必須使用別名進行查詢.
在不同的會話中.可以不需要使用別名進行查詢.
5.在多個會話中可以對同一個表進行lock read操作.但不能在多個會話中對同一個表進行lock write操作(這些鎖將等待已鎖的表釋放自身的線程鎖)
如果多個會話對同一個表進行lock read操作.那麼在這些會話中,也只能對以鎖的表進行讀操作.
6.如果要你鎖住了一個表,需要嵌套查詢.你必須使用別名,並且,要鎖定別名.
例如.lock table aa1 read ,aa1 as byname_table read;
select * from aa1 where id in (select * from aa1 as xxwhere id=2);
7.解鎖必須用unlock tables;
另:
在JAVA程序中,要想解鎖,需要調用 unlock tables來解鎖.
如果沒有調用unlock tables.
關閉connection 、程序結束 、調用GC 都能解鎖.
方法2:用記錄鎖鎖表.
publicvoidtest(){
Stringsql="select*fromaa1forupdate";
//select*fromaa1lockinsharemode;
try{
conn.setAutoCommit(false);
this.pstmt=conn.prepareStatement(sql);
pstmt.executeQuery();
}catch(Exceptione){
System.out.println("異常"+e.getMessage());
}
}
1.for update 與 lock in share mode 屬於行級鎖和頁級鎖
2.for update 排它鎖,lock in share mode 共享鎖
3.對於記錄鎖.必須開啟事務.
4.行級鎖定事實上是索引記錄的鎖定.只要是用索引掃描的行(或沒索引全表掃描的行),都將被鎖住.
5.在不同的隔離級別下還會使用next-key locking演算法.即所掃描的行之間的「間隙」也會也鎖住(在Repeatable read和Serializable隔離級別下有間隙鎖).
6.在mysql中共享鎖的含義是:在被共享鎖鎖住的行,即使內容被修改且並沒有提交.在另一個會話中依然看到最新修改的信息.
在同一會話中加上了共享鎖.可以對這個表以及這個表以外的所有表進行增、刪、改、查的操作.
在不同的會話中.可以查到共享鎖鎖住行的最新消息.但是在Read Uncommitted隔離級別下不能對鎖住的表進行刪,
改操作.(需要等待鎖釋放才能操作...)
在Read Committed隔離級別下不能對鎖住的表進行刪,改操作.(需要等待鎖釋放才能操作...)
在Repeatable read隔離級別下不能對鎖住行進行增、刪、改操作.(需要等待鎖釋放才能操作...)
在Serializable隔離級別下不能對鎖住行進行增、刪、改操作.(需要等待鎖釋放才能操作...)
7.在mysql中排他鎖的含義是:在被排它鎖鎖住的行,內容修改並沒提交,在另一個會話中不會看到最新修改的信息。
在不同的會話中.可以查到共享鎖鎖住行的最新消息.但是Read Uncommitted隔離級別下不能對鎖住的表進行刪,
改操作.(需要等待鎖釋放才能操作...)
在Read Committed隔離級別下不能對鎖住的表進行刪,改操作.(需要等待鎖釋放才能操作...)
在Repeatable read隔離級別下不能對鎖住行進行增、刪、改操作.(需要等待鎖釋放才能操作...)
在Serializable隔離級別下不能對鎖住行進行增、刪、改操作. (需要等待鎖釋放才能操作...)
8.在同一個會話中的可以疊加多個共享鎖和排他鎖.在多個會話中,需要等待鎖的釋放.
9.SQL中的update 與 for update是一樣的原理.
10.等待超時的參數設置:innodb_lock_wait_timeout=50 (單位秒).
11.任何可以觸發事務提交的命令,都可以關閉共享鎖和排它鎖.
⑺ java怎麼操作mysql資料庫
通過jdbc;
class.forName("com.mysql.jdbc.Driver");//載入驅動類
Drivermanager.getConnection(url,userName,password);//獲取鏈接
⑻ java 操作資料庫 MySQL
這種你要分兩步進行,第一步,把符合條件的ID(主鍵)都查出來
然後,從結果中取出第一個id,傳入delete from 表名 where 條件=第一個id
用jdbc就可以刪除了。
⑼ 對於java操作mysql資料庫刪除一行的問題
小兄弟,你的問題具體是什麼?
那我就自己猜了,你的這個資料庫操作,少了 DBTransaction 資料庫操作對象;、
如果對回答滿意,請點【採納答案】,如果還有問題,請點【追問】
希望我的回答對您有所幫助,希望能採納。
⑽ JAVA 如何實現與MYSQL資料庫建立連接
你根據這個改一下就可以了。
別忘了在你的項目中加入mysql驅動包。
希望對你有幫助
Connection conn=null;
Statement stm=null;
ResultSet rs=null;
try {
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://localhost/myDB?user=root&password=aaaaaa&useUnicode=true&characterEncoding=8859_1";
//user是用戶名,password是密碼 myDB為資料庫名
conn= DriverManager.getConnection(url);
stm=conn.createStatement();
這里寫你的SQL
} catch (Exception e) {
// TODO Auto-generated catch block
} finally{
try {
stm.close();
conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}