如何用乙個資料庫的資料去更新另乙個資料庫的內容

2021-04-09 08:11:57 字數 2643 閱讀 2740

**:愚翁

如何用乙個資料庫的資料去更新另乙個資料庫的內容

上次寫了乙個簡單資料庫之間資料交換的程式,但是考慮到如果資料量大的情況,我所使用的

dataadatper+dataset

方法,在效能上就有很大的劣勢。不過,要想在資料量大的資料庫之間能高效地交換,就需要捨棄原先的方法,而改用

dbcommand+datareader

來操作,其實也是很簡單的。

首先套用我原先例子資料轉換模式,即把

access

資料庫中的資料去更新

sql server

資料庫,其中用到資料表結構是一樣的(這兒只是為了簡化操作,並不是必要條件,其實只要兩個資料庫中資料表的字段要進行匹配即可,資料表可以是不一樣的

)。首先,先說說資料表結構,表名為「

employeeinfo

」。欄位名 型別

備註

employeeid

int自增字段

employeename

varchar(20)

password

varchar(20)

desciption

varchar(255)

接著,在採用

dbcommand+datareader

來進行資料庫資料的交換時,由於

datareader

每次唯讀到一條資料,因此要立刻把當前讀到的資料去更新另乙個資料庫。

具體**如下:

private

void btnexchange_click(object sender, system.eventargs e)

catch( exception err )

string strquery = "select * from employeeinfo";

oledbcommand myolecomm = new oledbcommand( strquery, oledbconn );

oledbdatareader myolereader = null;

try

catch( exception err )

}

private

void updatewithreader( ref oledbdatareader olereader )

catch( exception err )

// init update-command

sqlcommand commupdate = new sqlcommand( "updateemployee" );

commupdate.connection = sqlconn;

commupdate.commandtype = commandtype.storedprocedure;

// add command's parameters

commupdate.parameters.add( "@employeename",

sqldbtype.varchar, 20 );

commupdate.parameters.add( "@password",

sqldbtype.varchar, 20 );

commupdate.parameters.add( "@description",

sqldbtype.varchar, 255 );

try

catch( sqlexception err )

}

commupdate.dispose();

sqlconn.close();

}

catch( exception err )

}

以上匯入到第二資料庫的時候,程式是去執行乙個儲存過程,即我在資料庫儲存過程中去判斷是否要新增一條新的記錄還是在原有記錄上進行修改,這樣可以減少程式中查詢判斷,那麼如果要匯入的資料庫支援儲存過程的話,我建議用此方法來做

。儲存過程如下:

createprocedure updateemployee

@employeename varchar(20),

@password varchar(20),

@description varchar(255)

as

if exists( select employeeid from employeeinfo where employeename = @employeename )

begin

-- update the previous record in employeeregioninfo table

update employeeinfo set password = @password, description = @description

where employeename = @employeename

end

else

begin

-- insert a new record in employeeregioninfo table

insert into employeeinfo

( employeename, password, description )

values ( @employeename, @password, @description )

endgo

在SQLite中如何用乙個表的字段更新另乙個表

sql語句 update table 1 set x select x from table 2 where table 1.y table 2.y 如果括號中臨時建立的表中元素的個數小於table 1中元素個數或者只想更新table 1中部分x的值,可以在後面加where子句 example 更新...

資料庫設計正規化 如何設計乙個資料庫結構

正規化 英文名稱是 normal form,它是英國人 e.f.codd 關聯式資料庫的老祖宗 在上個世紀70年代提出關聯式資料庫模型後總結出來的,正規化是關聯式資料庫理論的基礎,也是我們在設計資料庫結構過程中所要遵循的規則和指導方法。目前有跡可尋的共有8種正規化,依次是 1nf,2nf,3nf,b...

乙個資料庫查詢的問題

有乙個表user book記錄了一名使用者擁有的書籍的資訊,表的資料如下 key userid bookid 1 1 2 2 1 3 3 1 4 4 2 1 5 2 3 這表明這名使用者1擁有2,3,4三本書,使用者2擁有1,3兩本書,以此類推。現在要用1個sql語句得到下面問題的結果 給出任意個b...