C#批量插入Sybase数据库,Anywhere 8
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#批量插入Sybase数据库,Anywhere 8,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2340字,纯文字阅读大概需要4分钟。
内容图文
![C#批量插入Sybase数据库,Anywhere 8](/upload/InfoBanner/zyjiaocheng/910/cf11ac98bc5146a0978c4a83ebbe33e6.jpg)
数据库版本是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#批量插入Sybase数据库,Anywhere 8所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。