ADO.NET 学习笔记 入门教程
本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=57&page=1&extra=#pid63
using (SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=UserDate;Integrated Security=True"))
{
程序语句块;
}
或者:
SqlConnection cnn = new SqlConnection();//创建SqlConnection对象的一个实例 cnn.ConnectionString = "Data Source=localhost;Initial Catalog=UserDate;Integrated Security=True";
cnn.Open();
cmd.CommandText = "INSERT INTO b1(name, company, position, shijian) VALUES(@Name, @Company, @Position, @Datetime)";
cmd.Parameters.Add(new SqlParameter("Name", Name.Text));
cmd.Parameters.Add(new SqlParameter("Company", Company.Text));
cmd.Parameters.Add(new SqlParameter("Position", Position.Text));
cmd.Parameters.Add(new SqlParameter("Datetime", DateTime.Parse(Datetime.Text)));
cmd.ExecuteNonQuery();
using(SqlCommand cmd = con.CreateComand())
{
cmd.CommandText = “INSERT INTO b1(name, company, position) VALUES(“whh”, “UVGE”, “coder”)”;
cmm.ExecuteNonQuery();
}
或者:
using(SqlCommand cmd = con.CreateComand())
{
//设置SQL语句
cmm.CommandText = "INSERT INTO b1(name, company, position, shijian) VALUES(@Name, @Company, @Position, @Datetime)";
//创建参数,并定义其数据类型,要和数据库中对应的字段保持相同
cmm.Parameters.Add("@Name", SqlDbType.NVarChar);
cmm.Parameters.Add("@Company", SqlDbType.NVarChar);
cmm.Parameters.Add("@Position", SqlDbType.NVarChar);
cmm.Parameters.Add("@Datetime", SqlDbType.DateTime);
//设置参数的值,这些值来自前段的输入信息
cmm.Parameters["@Name"].Value = Name.Text;
cmm.Parameters["@Company"].Value = Company.Text;
cmm.Parameters["@Position"].Value = Position.Text;
cmm.Parameters["@Datetime"].Value = Datetime.Text;
//执行SQL语句
cmm.ExecuteNonQuery();
}
using(SqlCommand cmd = con.CreateComand())
{
Cmd.CommandText = “SELECT语句”;
using(SqlDataReader reader = cmd.ExecuteReader())
{
While(reader.Read())
{
String name = reader.GetString(reader.GetOrdinal(“name”));
//数据处理语句块;
}
}
}
或者:
using(SqlCommand cmd = con.CreateComand())
{
using(SqlDataReader reader = cmd.ExecuteReader())
{
While(reader.Read())
{
String name = reader.[“name”].ToString();
//数据处理语句块;
}
}
}
cmd.CommandText = “INSERT INTO T_Users(UserName,PassWord) OUTPUT inserted.Id Values(“admin”, “”)”;
int id = Convert.ToInt32(cmd.ExecuteScalar());
SqlDataAdapter sqldadp = new SqlDataAdapter("SELECT name, company, position, shijian FROM [UserDate].[dbo].[b1] WHERE shijian > '2010-01-21'", con)
DataSet order_daset = new DataSet();//创建DataSet对象实例
sqldadp.Fill(order_daset);//填充DataSet对象
DataTable dt = new DataTable();//创建数据表对象
dt = order_daset.Tables[];//填充数据表
Response.Write("<table border='1'><tr><th>姓名</th><th>公司</th><th>职位</th><th>入职时间</th></tr>");
for (int i = ; i < dt.Rows.Count; i++)
{
//按照字段,逐行取出数据表中的内容并显示在页面上
Response.Write("<tr>");
Response.Write("<td>"+dt.Rows[i]["name"].ToString()+"</td>");
Response.Write("<td>"+dt.Rows[i]["company"].ToString()+"</td>");
Response.Write("<td>"+dt.Rows[i]["position"].ToString()+"</td>"); Response.Write("<td>"+DateTime.Parse(dt.Rows[i]["shijian"].ToString()).ToString("yyyy-MM-dd") + "</td>");
Response.Write("</tr>");
}
Response.Write("</table>");
注:上面的代码主要是数据集的展示功能,需要注意的是填充数据表的语句,是由DataSet对象的Tables属性的下标为0的数据表填充的,这点是非常重要的。
下面来看看对数据集的修改并且提交数据库,对数据集的修改,可以通过DataRow以及SqlCommandBuilder对象的实例来实现,SqlCommandBuilder的作用是根据DataAdapter对象自动生成INSERT、UPDATE、DELETE语句,从而使DataAdapter对象更新数据库内容。具体代码如下:
//创建DataAdapter对象实例
SqlDataAdapter sqldadp = new SqlDataAdapter("SELECT name, company, position, shijian FROM [UserDate].[dbo].[b1]", con);
SqlCommandBuilder scb = new SqlCommandBuilder(sqldadp);//生成插入、删除、更新语句
DataSet ds = new DataSet();//创建DataSet对象
sqldadp.Fill(ds);//填充DataSet
DataRow Myrow = ds.Tables[].NewRow();//在数据表中创建新的空白记录对象
//从前台页面接受要插入的数据
Myrow["name"] = Name.Text;
Myrow["company"] = Company.Text;
Myrow["position"] = Position.Text;
Myrow["shijian"] = Datetime.Text;
//将接收到的数据添加到DataTable中
ds.Tables[].Rows.Add(Myrow);
//更新数据库中的内容
sqldadp.Update(ds);
Response.Write("添加成功!<br>");
注:上面的代码中最关键的一个方法是SqlDataAdapter对象的Update()方法,这个方法的作用是将对数据集所作的改变提交给数据库,这部分代码与上面的展示代码所不同的是DataRow对象的实例所接收的是DataTable中的一行,而不是整个DataTable,其代码为:DataRow Myrow =ds.Tables[0].NewRow(),这句话就是说在原有的DataTable的基础上创建一个新的空行,而下面的代码则是为这个空行赋值并提交更新,同样的,如果是更新数据的话,也是获得DataTable的某一行后,然后对其中的数据进行赋值修改,然后提交,如果是删除操作,则是通过DataTable获取某行后,用DataRow接受,然后再调用DataTable的Rows属性的Remove方法删除,具体如下代码:
DataTable dt = ds.Tables[];
dt.Rows.Remove(Myrow);
using (SqlConnection con = new SqlConnection("Data Source = localhost; Initial Catalog = UserDate; Integrated Security = True"))
{
SqlTransaction transql = null;//申明SqlTransaction对象的实例
SqlCommand cmd = new SqlCommand();
try
{
con.Open();//创建数据库链接
transql = con.BeginTransaction();//开始事务处理
cmd.Connection = con;//设置Command对象的链接
cmd.Transaction = transql;//设置Command对象的事务
//设置带参数的SQL语句
cmd.CommandText = "INSERT INTO b1(name, company, position, shijian) VALUES(@Name, @Company, @Position, @Datetime)";
//为参数赋值(注意参数在数据库中的数据类型)
cmd.Parameters.Add(new SqlParameter("Name", Name.Text));
cmd.Parameters.Add(new SqlParameter("Company", Company.Text));
cmd.Parameters.Add(new SqlParameter("Position", Position.Text));
cmd.Parameters.Add(new SqlParameter("Datetime", DateTime.Parse(Datetime.Text)));//注意数据类型转换
//执行SQL语句
cmd.ExecuteNonQuery();
//提交事务
transql.Commit();
Response.Write("添加成功!<br>");
}
catch
{
//如果程序抛出异常则做事务回滚
transql.Rollback();
}
}
注:在上面的代码中,特别要注意SqlTransaction的实例接收的是SqlConnection实例的BeginTransaction()的返回值,SqlCommand的实例的Transaction属性接收的是SqlTransaction的实例,即SqlConnection实例的BeginTransaction()的返回值,而整个事务的过程是由SqlCommand实例来书写的,也就是说,在SqlCommand实例里面的代码相对应的事务都由SqlTransaction的实例自动生成,前提是必须要有transql = con.BeginTransaction();cmd.Transaction= transql;这两句代码,最后用SqlTransaction的Commit()方法或者Rollback()对事务进行提交或者回滚
ADO.NET 学习笔记 入门教程的更多相关文章
- PHP学习笔记 - 入门篇(5)
PHP学习笔记 - 入门篇(5) 语言结构语句 顺序结构 eg: <?php $shoesPrice = 49; //鞋子单价 $shoesNum = 1; //鞋子数量 $shoesMoney ...
- PHP学习笔记 - 入门篇(4)
PHP学习笔记 - 入门篇(4) 什么是运算符 PHP运算符一般分为算术运算符.赋值运算符.比较运算符.三元运算符.逻辑运算符.字符串连接运算符.错误控制运算符. PHP中的算术运算符 算术运算符主要 ...
- PHP学习笔记 - 入门篇(3)
PHP学习笔记 - 入门篇(3) 常量 什么是常量 什么是常量?常量可以理解为值不变的量(如圆周率):或者是常量值被定义后,在脚本的其他任何地方都不可以被改变.PHP中的常量分为自定义常量和系统常量 ...
- PHP学习笔记--入门篇
PHP学习笔记--入门篇 一.Echo语句 1.格式 echo是PHP中的输出语句,可以把字符串输出(字符串用双引号括起来) 如下代码 <?php echo "Hello world! ...
- LESS学习笔记 —— 入门
今天在网上完成了LESS的基础学习,下面是我的学习笔记.总共有三个文件:index.html.main.less.mian.css,其中 mian.css 是 main.less 经过Koala编译之 ...
- 学习笔记|JSP教程|菜鸟教程
学习笔记|JSP教程|菜鸟教程 ------------------------------------------------------------------------------------ ...
- 学习Objective-C入门教程(分享)
原百度文库连接:http://wenku.baidu.com/view/6786064fe518964bcf847c63.html PS:需要原文档的可以留邮箱发送! (我叫雷锋,不要谢我) 学习Ob ...
- Dubbo -- 系统学习 笔记 -- 入门
Dubbo -- 系统学习 笔记 -- 目录 入门 背景 需求 架构 用法 入门 背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行, ...
- Netty学习笔记-入门版
目录 Netty学习笔记 前言 什么是Netty IO基础 概念说明 IO简单介绍 用户空间与内核空间 进程(Process) 线程(thread) 程序和进程 进程切换 进程阻塞 文件描述符 文件句 ...
随机推荐
- java中的list,set,数组之间的转换
使用该工具类import org.apache.commons.collections.CollectionUtils; 在Apache Jakarta Commons Collections中 St ...
- HTML的基本代码第一课
打开DREAMWEAVER,新建HTML,如下图: 其中body的属性: bgcolor---页面背景颜色 text--文字颜色 topmargin--上页边距 leftmargin--左叶边距 ri ...
- Nginx问题定位之监控进程异常退出
nginx在运行过程中是否稳定,是否有异常退出过?这里总结几项平时会用到的小技巧. 1. 在error.log中查看是否有signal项,如果有,看看signal是多少. 比如,这是一个异常退出的情况 ...
- IIS 500.19 错误
HTTP 错误 500.19 - Internal Server Error 错误代码 0x80070021 配置错误 不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定是默 ...
- android raw与assets区别
*res/raw和assets的相同点: 1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制. *res/raw和assets的不同点:1.res/raw中的文件会被映射到R ...
- 教你一招 - 如何给nopcommerce增加一个类似admin的area
asp.net mvc里面的area是什么,点击这里查看 如果在nopcommerce里面加入类似admin的area,步骤如下: 1.新建一个mvc空项目MvcApplication1,位置放在\N ...
- POJ1426Find The Multiple[BFS]
Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 27433 Accepted: 114 ...
- [No000003]现代版三十六计,计计教你如何做人
<现代版三十六计,计计教你如何做人> …………………………………………………………………………………… 第1计施恩计 在人际交往中,见到给人帮忙的机会,要立马扑上去,像一只饥饿的松鼠扑向地 ...
- bzoj3223 文艺平衡树 (treap or splay分裂+合并)
3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 3313 Solved: 1883 [Submit][S ...
- jquery插件集
自定义滚动条jquery-custom-scrollbar 放大镜 fancybox,lightbox,jquery zoom