文件的寫入資料庫中
① 如何把一個word文檔中的內容寫入到資料庫中
首先,建立一個Access2000資料庫data.mdb,在庫中建立一個表userdata,裡面有「工號」、「姓名」、「性別」、「部門」四個欄位,都是字元型的,再輸入一些數據,再建立一個窗體Form1,在Form1中,放置以下控制項:
控制項名稱 屬性 值 說明
Tlabel1 Caption "請輸入文件名"
TEdit1 Name "" 用來輸入文件名,帶擴展名的
TButton1 Caption "保存"
TButton2 Caption "退出"
ADOTable1 Active
ConnectionString
TableName True
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.mdb;Persist Security Info=False
userdata
下面是相關代碼:
file://---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Variant OLEObject;
AnsiString dataword;
if(Trim(Edit1->Text)=="")
{
ShowMessage("請輸入文件名");
return;
}
String currentPath=GetCurrentDir()+"//"+Trim(Edit1->Text);
OLEObject=CreateOleObject("Word.Basic");
OLEObject.Exec(Procere("FileNew"));
OLEObject.Exec(Procere("EndOfDocument"));
ADOTable1->First();
while(ADOTable1->Eof!=True)
{
dataword=ADOTable1->FieldValues["工號"]+ADOTable1->FieldValues["姓名"]+ADOTable1->FieldValues["性別"]+ADOTable1->FieldValues["部門"];
OLEObject.Exec(Procere("Insert")<<dataword);
ADOTable1->Next();
}
OLEObject.Exec(Procere("StartOfDocument"));
OLEObject.Exec(Procere("FileSaveAs")<<currentPath);
OLEObject.Exec(Procere("FileClose")<<1);
ShowMessage("文件已經寫入!謝謝使用!");
}
---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
this->Close();
}
---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Click(TObject *Sender)
{
Edit1->Text="";
}
② 想把文件存入資料庫怎麼辦
資料庫是不好老會存儲友彎升文件的,他只是存儲文件的存放地址,比如你想存儲一個文件,你可以把文件名,文件大鬧判小,文件格式,文件存儲的地址(d:/file/fiel.txt)存到資料庫表中。
當你想獲取文件的時候就直接讀取文件的存儲地址Filefile=newFile("d:/file/fiel.txt");,這樣就能存儲數據文件了
③ java怎樣將讀取數據寫入資料庫
Java可以使用JDBC對資料庫進行讀寫。JDBC訪問一般分為如下流程:
一、載入JDBC驅動程序:
在連接資料庫之前,首先要載入想要連接的資料庫的驅動到JVM(Java虛擬機), 這通過java.lang.Class類的靜態方法forName(String className)實現。
例如:
try{
//載入Mysql的驅動類
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驅動程序類 ,載入驅動失敗!");
e.printStackTrace() ;
}
成功載入後,會將Driver類的實例注冊到DriverManager類中。
二、提供JDBC連接的URL 連接URL定義了連接資料庫時的協議、子協議、數據源標識。
書寫形式:協議:子協議:數據源標識 協議:在JDBC中總是以jdbc開始
子協議:是橋連接的驅動程序或是資料庫管理系統名稱。
數據源標識:標記找到資料庫來源的地址與連接埠。
例如:(MySql的連接URL)
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk
useUnicode=true:表示使用Unicode字元集。如果characterEncoding設置為
gb2312或GBK,本參數必須設置為true 。characterEncoding=gbk:字元編碼方式。
三、創建資料庫的連接
要連接資料庫,需要向java.sql.DriverManager請求並獲得Connection對象,該對象就代表一個資料庫的連接。
使用DriverManager的getConnectin(String url,String username,String password )方法傳入指定的欲連接的資料庫的路徑、資料庫的用戶名和密碼來獲得。
例如:
//連接MySql資料庫,用戶名和密碼都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{
Connection con =
DriverManager.getConnection(url , username , password ) ;
}catch(SQLException se){
System.out.println("資料庫連接失敗!");
se.printStackTrace() ;
} 納核
四、創洞團掘建一個Statement
要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3種類型:
1、執行或碧靜態SQL語句。通常通過Statement實例實現。
2、執行動態SQL語句。通常通過PreparedStatement實例實現。
3、執行資料庫存儲過程。通常通過CallableStatement實例實現。
具體的實現方式:
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}") ;
五、執行SQL語句
Statement介面提供了三種執行SQL語句的方法:executeQuery 、executeUpdate和execute
1、ResultSet executeQuery(String sqlString):執行查詢資料庫的SQL語句,返回一個結果集(ResultSet)對象。
2、int executeUpdate(String sqlString):用於執行INSERT、UPDATE或DELETE語句以及SQL DDL語句,如:CREATE TABLE和DROP TABLE等
3、execute(sqlString):用於執行返回多個結果集、多個更新計數或二者組合的語句。
具體實現的代碼:
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
int rows = stmt.executeUpdate("INSERT INTO ...") ;
boolean flag = stmt.execute(String sql) ;
六、處理結果 兩種情況:
1、執行更新返回的是本次操作影響到的記錄數。
2、執行查詢返回的結果是一個ResultSet對象。
ResultSet包含符合SQL語句中條件的所有行,並且它通過一套get方法提供了對這些行中數據的訪問。
使用結果集(ResultSet)對象的訪問方法獲取數據:
while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1); // 此方法比較高效(列是從左到右編號的,並且從列1開始)
}
七、關閉JDBC對象
操作完成以後要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲明順序相反:
1、關閉記錄集
2、關閉聲明
3、關閉連接對象
if(rs != null){ // 關閉記錄集
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(stmt != null){ // 關閉聲明
try{
stmt.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(conn != null){ // 關閉連接對象
try{
conn.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
(3)文件的寫入資料庫中擴展閱讀
樣例
package first;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheledExecutorService;
import java.util.concurrent.TimeUnit;
public class lianjie {
public static void main(String[] args) {
Runnable runnable = new Runnable() {
public void run() {
//聲明Connection對象
Connection con;
//驅動程序名
String driver1 = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
//URL指向要訪問的資料庫名
String url1 = "jdbc:sqlserver://IP地址和埠號;DateBaseName=資料庫名";
//MySQL配置時的用戶名
String user1 = "user";
//MySQL配置時的密碼
String password1 = "user";
//聲明Connection對象
Connection con1;
//驅動程序名
String driver2 = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
//URL指向要訪問的資料庫名
String url2 = "jdbc:sqlserver://IP地址和埠號;DateBaseName=資料庫名";
//MySQL配置時的用戶名
String user2 = "user";
//MySQL配置時的密碼
String password2 = "user";
//遍歷查詢結果集
try {
//載入驅動程序
Class.forName(driver1);
//1.getConnection()方法,連接MySQL資料庫!!
con = DriverManager.getConnection(url1,user1,password1);
if(!con.isClosed())
System.out.println("成功連接到資料庫!");
try {
//載入驅動程序
Class.forName(driver2);
//1.getConnection()方法,連接MySQL資料庫!!
con1 = DriverManager.getConnection(url2,user2,password2);
if(!con1.isClosed())
System.out.println("成功連接到資料庫!");
//2.創建statement類對象,用來執行SQL語句!!
Statement statement = con.createStatement();
//要執行的SQL語句
String sql = "use 資料庫名 select * from 表名";
//3.ResultSet類,用來存放獲取的結果集!!
ResultSet rs = statement.executeQuery(sql);
//要執行的SQL語句
String sql1 = "use tiantiana insert into Table_1(tiantian,qiqi,yuyu)VALUES(?,?,?)";
//3.ResultSet類,用來存放獲取的結果集!!
PreparedStatement pst = con1.prepareStatement(sql1);
System.out.println ("tiantian"+"/t"+"qiqi"+"/t"+"yuyu");
while(rs.next()){
System.out.print(rs.getString(1));
System.out.print(rs.getString(2));
System.out.print(rs.getString(3));
pst.setString(1,rs.getString(1));
pst.setString(2,rs.getString(2));
pst.setString(3,rs.getString(3));
pst.executeUpdate();
}
pst.close();
rs.close();
//2.創建statement類對象,用來執行SQL語句!!
Statement statement1 = con.createStatement();
//要執行的SQL語句
String sql2 = "use 資料庫名 select * from 表名";
//3.ResultSet類,用來存放獲取的結果集!!
ResultSet rs1 = statement1.executeQuery(sql2);
//要執行的SQL語句
String sql3 = "use tiantiana insert into Table_2(tiantian1,qiqi1,yuyu1)VALUES(?,?,?)";
//3.ResultSet類,用來存放獲取的結果集!!
PreparedStatement pst1 = con1.prepareStatement(sql3);
System.out.println ("tiantian1"+"/t"+"qiqi1"+"/t"+"yuyu1");
while(rs1.next()){
System.out.print(rs1.getString(1));
System.out.print(rs1.getString(2));
System.out.print(rs1.getString(3));
pst1.setString(1,rs1.getString(1));
pst1.setString(2,rs1.getString(2));
pst1.setString(3,rs1.getString(3));
pst1.executeUpdate();
}
//關閉鏈接
rs1.close();
pst.close();
con1.close();
con.close();
} catch(ClassNotFoundException e) {
//資料庫驅動類異常處理
System.out.println("對不起,找不到驅動程序!");
e.printStackTrace();
} catch(SQLException e) {
//資料庫連接失敗異常處理
e.printStackTrace();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
System.out.println("資料庫數據成功獲取!!");
}
} catch(ClassNotFoundException e) {
//資料庫驅動類異常處理
System.out.println("對不起,找不到驅動程序!");
e.printStackTrace();
} catch(SQLException e) {
//資料庫連接失敗異常處理
e.printStackTrace();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
System.out.println("資料庫數據成功獲取!!");
}
}
};
ScheledExecutorService service = Executors
.();
// 第二個參數為首次執行的延時時間,第三個參數為定時執行的間隔時間
service.scheleAtFixedRate(runnable, 10, 60*2, TimeUnit.SECONDS);
}
}
④ 怎樣把大量的數據通過txt文件直接導入到資料庫中
首先資料庫存儲數據有自己的格式:基本數據類型、二進制。。
怎麼存儲文件形式的數據?
1、針對txt文件,讀取文本內容,資料庫欄位設置數據類型text,將讀取的文本內容存入資料庫。
2、轉化為二進制存入資料庫,讀取文件,轉化為二進制流,資料庫欄位設置bit,之後將二進制數據存入資料庫,
3、將txt文件保存伺服器制定目錄下,在資料庫中存儲txt的絕對路徑,訪問時直接訪問文件即可。
⑤ java ssm文件上傳後怎麼寫入資料庫表中
java ssm文件上傳後怎麼寫入資料庫表中:
主要在上傳文件完成後,通過mybatis ORM框架進行資料庫表欄位URL文件路徑的寫入;
這邊主要是看你寫到那個欄位,先定義好,再執行上傳文件,文件上傳成功後,只需要存入上傳文件URL(文件路徑)/文件名都可以,這塊比較靈活,關鍵看你自己怎麼保存;
⑥ 我想把一個word文檔存到資料庫裡面,應該怎樣做
最笨的辦法:將word文件算作二進制文件,經由過程攫取二進制文件的方法寫入文件流,再將文件流數據寫入資料庫的二進制欄位中,反之,將資料庫中數據讀出再寫入二進制文件。
⑦ 文本文件導入到資料庫中的幾種方法
大型的資料庫開發中常常遇到數據源是平面文件(如文本文件)的情況,對於這樣的數據源,無法使用資料庫對其數據進行有效的管理,另外也無法使用SQL語句對其進行查詢和操作,所以當務之急就是將這些平面文件導
入到資料庫中,然後就可以對其進行高效的操作了。
下面介紹幾種常見的數據導入的方法,希望能夠給大家啟迪。另外,本文所涉及到的資料庫均為ORACLE資料庫,其實對於其他資料庫而言,方法類似。
一、Sql*:Loader
該方法是Oracle資料庫下數據導入的最重要的方法之一,該工具由Oracle客戶端提供,
其基本工作原理是:首先要針對數據源文件製作一個控制文件,控制文件是用來解釋如何對源文件進行解析,其中需要包含源文件的數據格式、目標資料庫的欄位等信息,一個典型的控制文件為如下形式:
LOAD DATA
INFILE '/ora9i/fengjie/agent/data/ipaagentdetail200410.txt'
TRUNCATE (也可以用append替換TRUNCATE)
INTO TABLE fj_ipa_agentdetail
fields terminated ","
trailing nullcols
( AGENT_NO char,
AGENT_NAME char,
AGENT_ADDRESS char,
AGENT_LINKNUM char,
AGENT_LINKMAN char
)
其中,INFILE '/ora9i/fengjie/agent/data/ipaagentdetail200410.txt'指明所要導入的源文件,其實源文件也可以直接通過命令行來輸入獲得 ,fj_ipa_agentdetail為目標表的名字,fields terminated ","是指源文件的各個欄位是以逗號分隔,trailing nullcols表示遇到空欄位依然寫入到資料庫表中,最後這5個欄位是目標資料庫表的欄位結構。通過上面這個典型的控制文件的格式分析可知,控制文件需要與源文件的格式信息一致,否則導入數據會出現異常。
除了控制以外,sql*loader的還需要數據文件,即源文件。根據格式的不同,源文件可以分為固定欄位長度和有分隔符這兩大類,這里將分別說明這兩種情況:
固定欄位長度的文本文件
就是每個欄位擁有固定的欄位長度,比如:
602530005922 1012
602538023138 1012
602536920355 1012
602531777166 1012
602533626494 1012
602535700601 1012
有分隔符的文本文件
就是每個欄位都有相同的分隔符分隔,比如:
1001,上海長途電信綜合開發公司,南京東路34號140室
1002,上海樺奇通訊科技有限公司,武寧路19號1902室
1003,上海邦正科技發展有限公司,南京東路61號903室
對於上述兩種文件格式sql*loader均可以做處理,下面就前面那個固定長度的文本來舉例說明:
由於該文本只有兩個欄位,一個為設備號,一個是區局編號,兩者的長度分別為20和5,那麼可以編制控制文件如下:
LOAD DATA
INFILE '/ora9i/fengjie/agent/data/ipaagent200410.txt'
TRUNCATE
INTO TABLE fj_ipa_agent
( DEVNO POSITION(1:20) CHAR,
BRANCH_NO POSITION(21:25) CHAR
)
其中,'/ora9i/fengjie/agent/data/ipaagent200410.txt'為該文件的完全路徑,POSITION(M:N)表示該欄位是從位置M到位置N。
對於有分隔符的數據文件,前面已經有一個例子,這里就不再贅述了。總之,使用Sql*Loader能夠輕松將數據文件導入到資料庫中,這種方法也是最常用的方法。
二、 使用專業的數據抽取工具
目前在數據倉庫領域中,數據抽取與裝載(ETL)是一重要的技術,這一技術對於一些大的數據文件或者文件數量較多尤其適合。這里簡單介紹目前一款主流的數據抽取工具 ――Informatica。
該工具主要採用圖形界面進行編程,其主要工作流程是:首先將源數據文件的結構(格式)導入為Informatica里,然後根據業務規則對該結構進行一定的轉換(transformation),最終導入到目標表中。
以上過程僅僅只是做了一個從源到目標的映射,數據的實際抽取與裝載需要在工作流(workflow)里進行。
使用專業的數據抽取工具,可以結合業務邏輯對多個源數據進行join,union,insect等操作,適合於大型資料庫和數據倉庫。
三、 使用Access工具導入
可以直接在Access里選擇『打開『文本文件,這樣按照向導來導入一個文本文件到Access資料庫中,然後使用編程的方法將其導入到最終的目標數據 庫中。
這種方法雖然煩瑣,但是其對系統的軟體配置要求相對較低,所以也是有一定的使用范圍
⑧ 如何將資料庫文件導入資料庫中
工具/材料:Management Studio。
1、首先在桌面上,點擊「Management Studio」圖標。