java輸出資料庫
① java連接mysql,並隨機抽取資料庫中的一些記錄並顯示出來
packagecom.joinmysql.demo;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Connection;
importjava.sql.Statement;
publicclassMysqlDemo{
publicstaticvoidmain(String[]args)throwsException{
Connectionconn=null;
Stringsql;
//MySQL的JDBCURL編寫方式:jdbc:mysql://主機名稱:連接埠/資料庫的名稱?參數=值
//避免中文亂碼要指定useUnicode和characterEncoding
//執行資料庫操作之前要在資料庫管理系統上創建一個資料庫,名字自己定,
//下面語句之前就要先創建javademo資料庫
Stringurl="jdbc:mysql://localhost:3306/test?user=root&password=jiangwei&useUnicode=true&characterEncoding=UTF8";
try{
//之所以要使用下面這條語句,是因為要使用MySQL的驅動,所以我們要把它驅動起來,
//可以通過Class.forName把它載入進去,也可以通過初始化來驅動起來,下面三種形式都可以
Class.forName("com.mysql.jdbc.Driver");//動態載入mysql驅動
//or:
逗滲//com.mysql.jdbc.Driverdriver=newcom.mysql.jdbc.Driver();
//or:
//newcom.mysql.jdbc.Driver();
System.out.println("成功載入MySQL驅動程序");
//一個Connection代表一個資料庫連接
conn=DriverManager.getConnection(url);
//Statement裡面帶有很多方法,比如executeUpdate可以實旁鄭現插入,更新和刪除等
Statementstmt=conn.createStatement();
sql="createtablestudent(NOchar(20),namevarchar(20),primarykey(NO))";
intresult=stmt.executeUpdate(sql);//executeUpdate語句會返回一個受影響的行數,如果返回-1就沒有成功
if(result!=-1){
System.out.println("創建數據表成功");
sql="insertintostudent(NO,name)values('2012001','陶偉基')";
result=stmt.executeUpdate(sql);
sql="insertintostudent(NO,name)values('2012002','周小俊')";
result=stmt.executeUpdate(sql);
sql="select*fromstudent";
ResultSetrs=stmt.executeQuery(sql);//executeQuery會返回結果的集合,否則返回空值
System.out.println("學號 姓名");
while(rs.next()){
System.out.println(rs.getString(1)+" "+rs.getString(2));//入如果返回的是int類型可以用getInt()
}
}
}catch(SQLExceptione){
System.out.println("MySQL操作錯誤");
運指頌e.printStackTrace();
}catch(Exceptione){
e.printStackTrace();
}finally{
conn.close();
}
}
}
② 怎樣用java代碼把數據導入到資料庫中
要使用Java代碼將數據導入到資料庫中,首先需要從文件讀取數據。例如,從名為"123.txt"的文件中讀取數據。這里使用BufferedReader來讀取文件內容,逐行讀取並處理。具體代碼如下:
BufferedReader input; try { String s = new String(); input = new BufferedReader(new FileReader("f:\\123.txt")); while ((s = input.readLine()) != null) { // 判斷是否讀到了最後一行 String info[] = s.split(" "); System.out.println( info[0] + " " + info[1] + " " + info[2] ); } input.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
接下來,將從文件中讀取到的每一行數據解析為一個字元串數組,並輸出前三個元素。這里,我們假設每行數據由空格分隔,且每行至少包含三個元素。現在,需要將這三個值放在一個插入語句中,以將數據插入到資料庫中。
示例代碼如下:
String sql = "INSERT INTO table_name (column1, column2, column3) VALUES ('" + info[0] + "', '" + info[1] + "', '" + info[2] + "')"; Statement stmt = conn.createStatement(); stmt.executeUpdate(sql);
在上述代碼中,首先構建一個插入語句,其中包含從文件讀取到的三個值。然後,創建一個Statement對象,並使用executeUpdate方法執行插入操作。
值得注意的是,在實際應用中,直接將用戶輸入的數據拼接到SQL語句中可能會導致SQL注入攻擊。為了防止這種攻擊,應該使用預編譯語句(PreparedStatement)來處理這種情況。預編譯語句可以將SQL語句和參數分開,從而提高安全性。
示例代碼如下:
String sql = "INSERT INTO table_name (column1, column2, column3) VALUES (?, ?, ?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, info[0]); pstmt.setString(2, info[1]); pstmt.setString(3, info[2]); pstmt.executeUpdate();
最後,記得關閉資源,釋放內存。例如,關閉BufferedReader和Statement對象。
BufferedReader input; try { String s = new String(); input = new BufferedReader(new FileReader("f:\\123.txt")); while ((s = input.readLine()) != null) { // 判斷是否讀到了最後一行 String info[] = s.split(" "); // 構建插入語句 String sql = "INSERT INTO table_name (column1, column2, column3) VALUES (?, ?, ?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, info[0]); pstmt.setString(2, info[1]); pstmt.setString(3, info[2]); pstmt.executeUpdate(); } input.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
經過測試,這段代碼可以成功地將數據從文件導入到資料庫中。