javamysql插入
⑴ 用java連接mysql實現對表中的數據查找,插入,修改等功能,
JDBC操作MySQL資料庫的步驟
1、准備MySQL資料庫驅動包:mysql-connector-java-5.0.8-bin.jar,一個項目中只能存在一個版本的驅動包
a、復制該驅動包,粘貼到項目中
b、選中項目里的驅動包,右鍵->Build Path->Add to Build Path
2、在類里寫代碼載入驅:決定連接哪種資料庫
a、Class.forName("com.mysql.jdbc.Driver");
b、必須進行異常處理:ClassNotFoundException
3、連接資料庫
a、Connection con=DriverManager.getConnection("連接字元串", "用戶名", "密碼");
b、連接字元串格式固定,不同資料庫,格式不同:jdbc:mysql://要連接的計算機名稱:埠號/要連接的資料庫名稱
c、必須進行異常處理:SQLException
4、拼寫要執行的sql語句,必須是可以在資料庫中執行的
5、創建執行sql語句的對象
a、Statement stmt=con.createStatement();
b、注意:Statement必須來自於java.sql包中
6、執行sql語句
a、執行insert、update和delete語句:int row=stmt.executeUpdate(sql);返回影響行數
b、執行查詢語句:ResultSet rs=stmt.executeQuery(sql);返回查詢結果
c、執行任意sql語句(DDL、DCL、DML和DQL等)
7、對執行結果進行處理
a、執行更新語句:判斷影響行數是否為0,0表示失敗,非0表示成功
b、對查詢結果進行處理:
1) 結果集需要先移動、後取值 :rs.next();int id=rs.getInt(1);
String name=rs.getString("loginName");
2) 結果集有多條時,需要循環操作:
while(rs.next()){ System.out.println(rs.getInt(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)+"\t"+rs.getString(4)+"\t"+rs.getInt(5));
}
3) 不確定是否有查詢結果時:if(rs.next()){說明有查詢結果}else{沒有查詢結果}
4) 使用了聚合函數,一定有查詢結果,查詢結果是一行一列:
rs.next();
int result=rs.getInt(1);
注意:結果集取值時取出的時查詢語句中包含的欄位,與表中欄位無關
9、關閉相關對象(先關閉結果集對象、在關閉執行語句對象,最後關閉連接對象)
例如:執行查詢語句
Scanner input=new Scanner(System.in);
System.out.print("請輸入登錄名: ");
String name=input.next();
System.out.print("請輸入密碼: ");
String pass=input.next();
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/userdb", "root", "root");
String sql="select COUNT(*) from UserInfo where loginName='"+name+"' and loginPass='"+pass+"'";
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(sql);
rs.next();
int result=rs.getInt(1);
if(result!=0){
System.out.println("登錄成功!");
}else{
System.out.println("用戶名或密碼錯誤,請重新登錄!");
}
rs.close();
stmt.close();
con.close();
} catch (ClassNotFoundException e) {
System.out.println("載入驅動錯誤:"+e.getMessage());
} catch (SQLException e) {
System.out.println("資料庫操作錯誤:"+e.getMessage());
}
執行添加、修改和刪除語句
try {
//載入驅動
Class.forName("com.mysql.jdbc.Driver");
//連接資料庫
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/userdb", "root", "root");
//拼寫要執行的sql語句
String sql="update UserInfo set loginPass='111' where loginName='a'";
//String sql="insert UserInfo values(default,'test','test')";
//String sql="delete from UserInfo where loginName='a'";
//創建執行語句對象
Statement stmt=con.createStatement();
//執行
int row=stmt.executeUpdate(sql);
//處理結果
if(row==0){
System.out.println("修改失敗!");
}else{
System.out.println("修改成功!");
}
//關閉
stmt.close();
con.close();
} catch (ClassNotFoundException e) {
System.out.println("驅動載入錯誤:"+e.getMessage());
} catch (SQLException e) {
System.out.println("資料庫操作錯誤:"+e.getMessage());
}
⑵ Java里用INSERT INTO VALUES()向mysql插入數據,VALUES裡面的值是變數怎麼辦
VALUES 語句
具體語法:VALUES row_constructor_list[ORDER BY column_designator][LIMIT BY number] row_constructor_list: ROW(value_list)[, ROW(value_list)][, ...]value_list: value[, value][, ...]column_designator: column_index
VALUES 語句,用做功能展示或者快速造數據場景,結果列名字以 COLUMN_0 開頭,以此類推,舉個簡單例子。單條 VALUES 語句mysql-(ytt/3305)->values row(1,2,3);+----------+----------+----------+| column_0 | column_1 | column_2 |+----------+----------+----------+| 1| 2| 3|+----------+----------+----------+1 row inset(0.00 sec)
多條 VALUES 語句mysql-(ytt/3305)->values row(1,2,3),row(10,9,8);+----------+----------+----------+| column_0 | column_1 | column_2 |+----------+----------+----------+| 1 | 2 | 3 || 10 | 9 | 8 |+----------+----------+----------+2 rows in set (0.00 sec)
多條 VALUES 聯合 UNION ALLmysql-(ytt/3305)->values row(1,2,3),row(10,9,8) union all values \ row(-1,-2,0),row(10,29,30),row(100,20,-9);+----------+----------+----------+| column_0 | column_1 | column_2 |+----------+----------+----------+| 1 | 2 | 3 || 10 | 9 | 8 || -1 | -2 | 0 || 10 | 29 | 30 || 100 | 20 | -9 |+----------+----------+----------+5 rows in set (0.00 sec)
根據欄位下標排序,從 1 開始mysql-(ytt/3305)->values row(1,2,3),row(10,9,8) union all values \ row(-1,-2,0),row(10,29,30),row(100,20,-9) order by 1 desc ;+----------+----------+----------+| column_0 | column_1 | column_2 |+----------+----------+----------+| 100 | 20 | -9 || 10 | 9 | 8 || 10 | 29 | 30 || 1 | 2 | 3 || -1 | -2 | 0 |+----------+----------+----------+5 rows in set (0.00 sec)
類型可以任意組合:bit,json,datetime,int,decimal 等mysql-(ytt/3305)->values row(100,200,300),\ row('2020-03-10 12:14:15','mysql','test'), \ row(16.22,TRUE,b'1'), \ row(left(uuid(),8),'{"name":"lucy","age":"28"}',hex('dble'));+---------------------+----------------------------+--------------------+| column_0 | column_1 | column_2 |+---------------------+----------------------------+--------------------+| 100 | 200 | 0x333030 || 2020-03-10 12:14:15 | mysql | 0x74657374 || 16.22 | 1 | 0x01 || c86fd1a7 | {"name":"lucy","age":"28"} | 0x3634363236433635 |+---------------------+----------------------------+--------------------+4 rows in set (0.00 sec)
新建表 t3,把剛才這些記錄寫進去mysql-(ytt/3305)->create table t3 (r1 varchar(100),r2 varchar(100),r3 varchar(100));Query OK, 0 rows affected (0.02 sec)
寫入到表 t3mysql-(ytt/3305)->insert into t3 values row(100,200,300), \ row('2020-03-10 12:14:15','mysql','test'), \ row(16.22,TRUE,b'1'),\ row(left(uuid(),8),'{"name":"lucy","age":"28"}',hex('dble'));Query OK, 4 rows affected (0.00 sec)Records: 4 Duplicates: 0 Warnings: 0
⑶ 用java如何將txt文件導入mysql
Java中將txt文件導入到mysql基本困啟碼的思路,操作流獲取到文件具體信息,然後將信息拼接成mysql插入到資料庫中。
⑷ 在java中怎樣連接mysql資料庫
1.在開發環境中載入指定資料庫的驅動程序。
接下來的實驗中,使用資料庫MySQL,所以需要下載MySQL支持JDBC的驅動程序(mysql-connector-java-5.1.18-bin.jar)。
2.開發環境是MyEclipse,將下載得到的驅動程序載入進開發環境中。
3.在Java程序中載入驅動程序。
在Java程序中,通過「Class.forName(「指定資料庫的驅動程序」)」
方式來載入添加到開發環境中的驅動程序,例如Class.forName(「com.mysql.jdbc.Driver」)。
4.創建數據連接對象:通過DriverManager類創建資料庫連接對象Connection。
DriverManager類作用於Java程序和JDBC驅動程序之間,用於檢查所載入的驅動程序是否可以建立連接,然後通過它的getConnection方法,根據資料庫的URL、用戶名和密碼,創建一個JDBC
Connection對象。代碼如:Connectionconnection=DriverManager.getConnection(「連接資料庫的URL","用戶名",
"密碼」)。
其中,URL=協議名+IP地址(域名)+埠+資料庫名稱;用戶名和密碼是指登錄資料庫時所使用的用戶名和密碼。具體示例創建MySQL的資料庫連接代碼如下:
ConnectionconnectMySQL=
DriverManager.geiConnection(「jdbc:mysql://localhost:3306/myuser","root"
,"root");
5.創建Statement對象:Statement類的主要是用於執行靜態SQL
語句並返回它所生成結果的對象。
通過Connection對象的createStatement()方法可以創建一個Statement對象。例如:Statementstatament=
connection.createStatement();具體示例創建Statement對象代碼如下:StatementstatamentMySQL=connectMySQL.createStatement();
6.調用Statement對象的相關方法執行相對應的SQL
語句:通過execuUpdate()方法用來數據的更新,包括插入和刪除等操作,例如向staff表中插入一條數據的代碼:
statement.excuteUpdate("INSERTINTO
staff(name,age,sex,address,depart,worklen,wage)"+"VALUES('Tom1',321,
'M','china','Personnel','3','3000')");
7.通過調用Statement對象的executeQuery()方法進行數據的查詢,而查詢結果會得到
ResulSet對象,ResulSet表示執行查詢資料庫後返回的數據的集合,ResulSet對象具有可以指向當前數據行的指針。通過該對象的next()方法,使得指針指向下一行,然後將數據以列號或者欄位名取出。如果當next()方法返回null,則表示下一行中沒有數據存在。使用示例代碼如下:
ResultSetresultSel=
statement.executeQuery("select*fromstaff");
8.關閉資料庫連接:使用完資料庫或者不需要訪問資料庫時,通過Connection的close()方法及時關閉數據連接。