为了账号安全,请及时绑定邮箱和手机立即绑定

如何将DataTable以最快的速度插入到数据库?

/ 猿问

如何将DataTable以最快的速度插入到数据库?

catspeake 2019-05-27 10:06:31

如何将DataTable以最快的速度插入到数据库


查看完整描述

3 回答

?
蓝山帝景

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

/// <summary>  

/// 初始化一个DataTable类型的数据源  

/// <para/>Author : AnDequan  

/// <para/>Date   : 2011-3-14  

/// </summary>  

/// <returns>Source</returns>  

private DataTable InitSource()  

{  

    DataTable dtUserAdd = new DataTable();  

    dtUserAdd.Columns.Add(new DataColumn("ID", typeof(int)));  

    dtUserAdd.Columns.Add(new DataColumn("UserName", typeof(string)));  

    dtUserAdd.Columns.Add(new DataColumn("UserPwd", typeof(string)));  

    DataRow drTemp = null;  

    for (int i = 0; i < 100; i++)  

    {  

        drTemp = dtUserAdd.NewRow();  

        drTemp["ID"] = 0;  

        drTemp["UserName"] = "测试" + (i + 1);  

        drTemp["UserPwd"] = "密码" + (i + 1);  

        dtUserAdd.Rows.Add(drTemp);  

    }  

    return dtUserAdd;  

}  

   

/// <summary>  

/// 一次性把DataTable中的数据插入<a href="http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知识库" target='_blank' style='color:#df3434; font-weight:bold;'>数据库</a>  

/// <para/>Author : AnDequan  

/// <para/>Date   : 2011-3-14  

/// </summary>  

/// <param name="source">DataTable数据源</param>  

/// <returns>true - 成功,false - 失败</returns>  

public bool AddDataTableToDB(DataTable source)  

{  

    SqlTransaction tran = null;//声明一个事务对象  

    try  

    {  

        using (SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=sa;database=Test;"))  

        {  

            conn.Open();//打开链接  

            using (tran = conn.BeginTransaction())  

            {  

                using (SqlBulkCopy copy = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, tran))  

                {  

                    copy.DestinationTableName = "AnDequan.dbo.[User]";  //指定服务器上目标表的名称  

                    copy.WriteToServer(InitSource());                      //执行把DataTable中的数据写入DB  

                    tran.Commit();                                      //提交事务  

                    return true;                                        //返回True 执行成功!  

                }  

            }  

        }  

    }  

    catch (Exception ex)  

    {  

        if (null != tran)  

            tran.Rollback();  

        //LogHelper.Add(ex);  

        return false;//返回False 执行失败!  

    }  

}


查看完整回答
反对 回复 2019-06-01
?
慕前端131612

查询方法:
1、执行select * from dba_db_links;语句。
2、在PL/SQL中,在左边浏览器中点击database links就可以看到数据库链路了。
创建Create database link语句:
create public database link 链路名 connect to 用户 identified by 口令 using '连接字符串';

查看完整回答
反对 回复 2019-06-01
?
三国纷争

我在单位创建几N次,如有两个Oracle数据库A和B,想从A调用B的数据,方法如下:
1、在A服务器上,配置Oracle连接串,连接B服务器,即相当于A是客户端一样;
2、在PL/SQL Developer中,找到左侧树中的database link,点右键创建;
3、然后按照提示,写上相关B数据库中的用户名、密码、刚刚在1中设置好的连接串名以及database link的名字;
4、在登陆A后,用@+database link的名字来访问数据,例:B数据库在A数据库中设置的名字为Bdatabase,B数据库有权访问B数据库中的T1表,在A数据库访问格式如下:select * from t1@Bdatabase;

查看完整回答
反对 回复 2019-06-01

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信