CUBRID学习笔记 32 对net的datatable的支持 cubrid教程
- 在net的驱动中实现理一下的支持
- DataTable data populate
- Built-in commands construct: INSERT , UPDATE, DELETE
- Columns metadata/properties
- DataSet, DataView inter-connection
还是看例子 会net都会看懂 不解释
//获取列属性:
String sql = "select * from nation";
CUBRIDDataAdapter da = new CUBRIDDataAdapter();
da.SelectCommand = new CUBRIDCommand(sql, conn);
DataTable dt = new DataTable("nation");
da.FillSchema(dt, SchemaType.Source); //To retrieve all the column properties you have to use the FillSchema() method Debug.Assert(dt.Columns[].ColumnName == "code");
Debug.Assert(dt.Columns[].AllowDBNull == false);
Debug.Assert(dt.Columns[].DefaultValue.ToString() == "");
Debug.Assert(dt.Columns[].Unique == true);
Debug.Assert(dt.Columns[].DataType == typeof(System.String));
Debug.Assert(dt.Columns[].Ordinal == );
Debug.Assert(dt.Columns[].Table == dt);
//插入记录
String sql = "select * from nation order by `code` asc";
using (CUBRIDDataAdapter da = new CUBRIDDataAdapter(sql, conn))
{
using (CUBRIDDataAdapter daCmd = new CUBRIDDataAdapter(sql, conn))
{
CUBRIDCommandBuilder cmdBuilder = new CUBRIDCommandBuilder(daCmd);
da.InsertCommand = cmdBuilder.GetInsertCommand();
} DataTable dt = newDataTable("nation");
da.Fill(dt); DataRow newRow = dt.NewRow();
newRow["code"] = "ZZZ";
newRow["name"] = "ABCDEF";
newRow["capital"] = "MyXYZ";
newRow["continent"] = "QWERTY";
dt.Rows.Add(newRow);
da.Update(dt);
}
//完整的代码:
using CUBRID.Data.CUBRIDClient;
using System.Diagnostics;
using System.Data;
using System; namespace DataTableExample
{
class Program
{
private static void ExecuteSQL(string sql, CUBRIDConnection conn)
{
using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
{
cmd.ExecuteNonQuery();
}
} private static int GetTableRowsCount(string tableName, CUBRIDConnection conn)
{
int count = -;
string sql = "select count(*) from `" + tableName + "`"; using (CUBRIDCommand cmd = new CUBRIDCommand(sql, conn))
{
count = (int)cmd.ExecuteScalar();
} return count;
} static void Main(string[] args)
{
CUBRIDConnectionStringBuilder sb = new CUBRIDConnectionStringBuilder("localhost", "demodb", "public", "", "");
using (CUBRIDConnection conn = new CUBRIDConnection(sb.GetConnectionString()))
{
conn.Open(); String sql = "select * from nation order by `code` DESC LIMIT 10";
using (CUBRIDDataAdapter da = new CUBRIDDataAdapter(sql, conn))
{ //Initialize the command object that will be used as the UpdateCommand for the DataAdapter.
CUBRIDCommand daInsert = new CUBRIDCommand("insert into nation values(?,?,?,?)", conn);
daInsert.CommandType = CommandType.Text; //Parameter: code
daInsert.Parameters.Add(new CUBRIDParameter("?p1", DbType.String));
daInsert.Parameters["?p1"].SourceVersion = DataRowVersion.Current;
daInsert.Parameters["?p1"].SourceColumn = "code";
daInsert.Parameters["?p1"].SourceColumnNullMapping = false; //Parameter: name
daInsert.Parameters.Add(new CUBRIDParameter("?p2", DbType.String));
daInsert.Parameters["?p2"].SourceVersion = DataRowVersion.Original;
daInsert.Parameters["?p2"].SourceColumn = "name";
daInsert.Parameters["?p2"].SourceColumnNullMapping = false; //Parameter: continent
daInsert.Parameters.Add(new CUBRIDParameter("?p3", DbType.String));
daInsert.Parameters["?p3"].SourceVersion = DataRowVersion.Current;
daInsert.Parameters["?p3"].SourceColumn = "continent";
daInsert.Parameters["?p3"].SourceColumnNullMapping = false; //Parameter: capital
daInsert.Parameters.Add(new CUBRIDParameter("?p4", DbType.String));
daInsert.Parameters["?p4"].SourceVersion = DataRowVersion.Original;
daInsert.Parameters["?p4"].SourceColumn = "capital";
daInsert.Parameters["?p4"].SourceColumnNullMapping = false; daInsert.UpdatedRowSource = UpdateRowSource.None; //Assign the command to the InsertCommand property of the DataAdapter.
da.InsertCommand = daInsert; DataTable dt = new DataTable("nation");
da.Fill(dt);
DataRow newRow = dt.NewRow();
newRow["code"] = "ZZZ";
newRow["name"] = "ABCDEF";
newRow["capital"] = "MyXYZ";
newRow["continent"] = "QWERTY";
dt.Rows.InsertAt(newRow, );
da.Update(dt);
dt.AcceptChanges(); Debug.Assert(dt.Rows[]["capital"].ToString() == "MyXYZ");
Debug.Assert(newRow.RowState.ToString() != "New");
} Debug.Assert(GetTableRowsCount("nation", conn) == );
//Revert changes
ExecuteSQL("delete from nation where `code` = 'ZZZ'", conn);
Debug.Assert(GetTableRowsCount("nation", conn) == ); conn.Close();
}
}
}
}
CUBRID学习笔记 32 对net的datatable的支持 cubrid教程的更多相关文章
- CUBRID学习笔记 35 net驱动错误码和信息 cubrid教程示例
DO.NET Error Code Number Error Code Error Message Note 0 ER_NO_ERROR "No Error" 1 ER_NOT ...
- Effective STL 学习笔记 32 ~ 33
Effective STL 学习笔记 32 ~ 33 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- python3.4学习笔记(十六) windows下面安装easy_install和pip教程
python3.4学习笔记(十六) windows下面安装easy_install和pip教程 easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安 ...
- CUBRID学习笔记 47 show
cubrid的中sql查询语法show c#,net,cubrid,教程,学习,笔记欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com . ...
- CUBRID学习笔记 48查询优化
cubrid的中sql查询语法 查询优化 c#,net,cubrid,教程,学习,笔记欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com ...
- CUBRID学习笔记 46 PREPARED set Do
cubrid的中sql查询语法PREPARED set Do c#,net,cubrid,教程,学习,笔记欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650 ...
- CUBRID学习笔记 45 REPLACE DELETE MERGE 教程
c#,net,cubrid,教程,学习,笔记欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com . 过错 ------ 官方文档是英文的, ...
- CUBRID学习笔记 44 UPDATE 触发器 更新多表 教程
cubrid的中sql查询语法UPDATE c#,net,cubrid,教程,学习,笔记欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com ...
- CUBRID学习笔记 43 insert into
cubrid的中sql查询语法insert into ------ 官方文档是英文的,看不明白可以参看ocracle的同类函数说明.很多都是一样的. INSERT INTO a_tbl1(id) VA ...
随机推荐
- Hadoop实战2:MapReduce编程-WordCount实例-streaming-python环境
这是搭建hadoop环境后的第一个MapReduce程序: 基于hadoop streaming的python的脚本: 1 map.py文件,把文本的内容划分成单词: #!/usr/bin/pytho ...
- 关于jQuery的bind()\trigger()\triggerHandler()
1.bind() 事件绑定. 多个事件会链式累加,而不会覆盖. 即 $("div").bind("click",funtion(){alert("te ...
- JNI 回调小记
javah在eclipse中设置参数:location(javah.exe的位置)working dir(${project_loc}/src) -classpath .;./classes -d $ ...
- C语言中关键字volatile的含义【转】
本文转载自:http://m.jb51.net/article/37489.htm 本篇文章是对C语言中关键字volatile的含义进行了详细的分析介绍,需要的朋友参考下 volatile 的意思是“ ...
- 各种数据库连接代码的测试类(java)
测试类: public class Mytest { Connection conn=null; Statement stmt=null; String myDriver="com.mysq ...
- JSP/Servlet 中的汉字编码问题
JSP/Servlet 中的汉字编码问题 1.问题的起源 每个国家(或区域)都规定了计算机信息交换用的字符编码集,如美国的 ASCII,中国的 GB2312 -80,日本的 JIS 等,作为该国家/区 ...
- uname -r和uname -a了解
1.uname -r :显示操作系统的发行版号2.uname -a :显示系统名.节点名称.操作系统的发行版号.操作系统版本.运行系统的机器 ID 号. #uname -aHP-UX RX1600 B ...
- [OSG][转]osg格式文件
转自:http://blog.csdn.net/timothyfly/article/details/7826139 osg格式文件中如何处理多个节点共享一个子节点 下面一段程序中,共有三个Group ...
- python: html
1. 三把利剑(html css js) css(颜色 位置) js (动) 2. 标签的分类:块级标签和行内标签 块级标签(div h p) 行内标签(span) 3. 标签存在的意义:为了方便操作 ...
- protoful进行序列化
Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化.它很适合做数据存储或 RPC 数据交换格式.可用于通讯协议.数据存储等领域的语言无关.平台 ...