数据库版本是Adaptive Server Anywhere 81、添加引用,程序集 iAnywhere.Data.AsaClient。这个和SQLServer的System.Data.SqlClient类似,一般方法和用法都差不多。2、对于批量插入SqlClient提供了BulkCopy方法,很...
数据库版本是Adaptive Server Anywhere 8
1、添加引用,程序集 iAnywhere.Data.AsaClient。这个和SQLServer的System.Data.SqlClient类似,一般方法和用法都差不多。
2、对于批量插入SqlClient提供了BulkCopy方法,很方便。可惜AsaClient里面没有。但和SqlClient一样的是,可以使用adapter.Update(datatable)方法进行批量插入。
3、注意点:在构建带参数的sql语句时,Asa的参数前面是加“:”,而SqlServer是加“@”。其他的写法都是一毛一样。
示例:
1、数据库建表sql语句
if exists(select id from sysobjects where type='U' and name='FloatValue')
drop table FloatValue
go
create table FloatValue(
vid integer not null,
value_f float,
time_v datetime
)
2、构建和表结构相同的Datatable,column名和数据库表的列名相同。
1 public static DataTable GetTableSchema()
2 {
3 DataTable dt = new DataTable();
4 dt.Columns.Add("vid");
5 dt.Columns.Add("value_f");
6 dt.Columns.Add("time_v");
7 return dt;
8 }
3、写在helper类的方法
1 public static int BulkToASA(string sql,AsaParameter[]ps, DataTable dt)
2 {
3 using (AsaConnection conn=new AsaConnection(connStr))
4 {
5 using (AsaCommand cmd = new AsaCommand(sql, conn))
6 {
7 if (ps != null)
8 {
9 for (int i = 0; i < ps.Length; i++)
10 {
11 cmd.Parameters.Add(ps[i]);
12 }
13 }
14 AsaDataAdapter adapter = new AsaDataAdapter();
15 AsaCommandBuilder ab = new AsaCommandBuilder(adapter);
16 adapter.InsertCommand = cmd;
17
18 return adapter.Update(dt);
19 }
20 }
21 }
4、调用方法
1 public static int InsertDatatable(DataTable dt)
2 {
3 string sql = @"insert into FloatValue (vid,value_f,time_v) values(:id,:value,:time)";
4 AsaParameter[] ps = { new AsaParameter("id", AsaDbType.Integer,8,"vid"), new AsaParameter("value",AsaDbType.Float,15,"value_f"), new AsaParameter("time", AsaDbType.DateTime,30,"time_v") };
5 return SqlHelperForASA.BulkToASA(sql, ps,dt);
6 }
这个插入速度至少每秒2000条以上(我测试的一个datatable里面就只有2000条,实际应该更快吧)。
本文标题为:C#批量插入Sybase数据库,Anywhere 8
基础教程推荐
- C#中DataSet,DataTable,DataView的区别与用法 2023-06-07
- C#的并发机制优秀在哪你知道么 2023-05-16
- 如何在C#中使用 CancellationToken 处理异步任务 2023-04-09
- 关于C#反射 你需要知道的 2023-02-25
- c# – 将ListView中的SelectedItems绑定到Windows Phone 8.1中的ViewModel 2023-09-19
- C# 字符串与unicode互相转换实战案例 2023-03-28
- 在Visual Studio中使用C#或VB为Mac,Windows或iOS创建桌面应用程序 2023-09-18
- 深入了解c# 设计模式之简单工厂模式 2023-03-03
- Winform开发中使用下拉列表展示字典数据的几种方式 2023-07-04
- Linux下调试.Net core:lldb的安装 2023-09-27
