C# III: 数据库基本操作
用C#操作数据库——数据库使用SQL Server为例,对应的namespace是System.Data.SqlClient.
- 读取数据
从数据库中读取数据是最基本的操作了。
示例代码如下:
String connString = @""; // Connection string
SqlConnection conn = new SqlConnection(connString);
try
{
String queryString = @"SELECT [ID], [NAME] FROM dbo.TABLE1;";
conn.Open();
SqlCommand cmd = new SqlCommand(queryString, conn);
SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
Console.Write(reader.GetInt32(0)); // ID
Console.Write(reader.GetString(1)); // Name
}
}
catch(Exception exp)
{
System.Diagnostics.Debug.WriteLine(exp.Message);
}
finally
{
conn.Close();
conn.Dispose();
}
- 写入数据
与读取数据旗鼓相当的支柱型操作就是写入了。
一个简单的写入示例(这里使用了一个await操作以达到异步的效果):
String connString = @""; // Connection string
SqlConnection conn = new SqlConnection(connString);
try
{
String queryString = @"INSERT INTO dbo.TABLE1 ([ID], [Name]) VALUES(1, 'Test')";
conn.Open();
SqlCommand cmd = new SqlCommand(queryString, conn);
try
{
Int32 nRst = await cmd.ExecuteNonQueryAsync();
}
catch(Exception exp)
{
System.Diagnostics.Debug.WriteLine(exp.Message);
}
}
catch (Exception exp)
{
System.Diagnostics.Debug.WriteLine(exp.Message);
}
finally
{
conn.Close();
conn.Dispose();
}
- Transaction支持
同时写入多个有关联的表时,就需要transaction的支持了。
一个示例如下:
String connString = @""; // Connection string
SqlConnection conn = new SqlConnection(connString);
try
{
conn.Open();
SqlTransaction trans = conn.BeginTransaction();
try
{
String queryString = @"INSERT INTO dbo.TABLE1 ([ID], [Name]) VALUES(1, 'Test')";
SqlCommand cmd = new SqlCommand(queryString, conn);
cmd.Transaction = trans;
Int32 nRst = await cmd.ExecuteNonQueryAsync();
queryString2 = @"INSERT INTO dbo.TABLE2 ([ID], [Name]) VALUES(2, 'Test2')";
cmd = new SqlCommand(queryString2, conn);
cmd.Transaction = trans;
nRst = await cmd.ExecuteNonQueryAsync();
trans.Commit();
}
catch(Exception exp)
{
System.Diagnostics.Debug.WriteLine(exp.Message);
trans.Rollback();
}
}
catch (Exception exp)
{
System.Diagnostics.Debug.WriteLine(exp.Message);
}
finally
{
conn.Close();
conn.Dispose();
}
- 参数支持
上述的代码片中,插入数据库中的是固定文本。而现实生活中,插入数据库绝大多数是变量——比如用户输入的内容,这时就需要用到参数。
String connString = @""; // Connection string
SqlConnection conn = new SqlConnection(connString);
try
{
String queryString = @"INSERT INTO dbo.TABLE1 ([ID], [Name]) VALUES(@id, @name)";
conn.Open();
SqlCommand cmd = new SqlCommand(queryString, conn);
cmd.Parameters.AddWithValue( "@id" , 3);
cmd.Parameters.AddWithValue( "@name" , 'Test');
try
{
Int32 nRst = await cmd.ExecuteNonQueryAsync();
}
catch(Exception exp)
{
System.Diagnostics.Debug.WriteLine(exp.Message);
}
}
catch (Exception exp)
{
System.Diagnostics.Debug.WriteLine(exp.Message);
}
finally
{
conn.Close();
conn.Dispose();
}
- Identity Value的获取
另外一个经常碰到的问题是,当table中一个Column设置为identity时候,需要取出刚insert成功的数据所获得的ID。
String connString = @""; // Connection string
SqlConnection conn = new SqlConnection(connString);
try
{
// ID is set to identity
String queryString = @"INSERT INTO dbo.TABLE1 ([Name]) VALUES(@name); SELECT @Identity = SCOPE_IDENTITY();";
conn.Open();
SqlCommand cmd = new SqlCommand(queryString, conn);
cmd.Parameters.AddWithValue( "@name" , 'Test');
SqlParameter idparam = cmd.Parameters.AddWithValue("@Identity", SqlDbType.Int);
idparam.Direction = ParameterDirection.Output;
try
{
Int32 nRst = await cmd.ExecuteNonQueryAsync();
Int32 newID = (Int32)idparam.Value;
}
catch(Exception exp)
{
System.Diagnostics.Debug.WriteLine(exp.Message);
}
}
catch (Exception exp)
{
System.Diagnostics.Debug.WriteLine(exp.Message);
}
finally
{
conn.Close();
conn.Dispose();
}
是为之记。
Alva Chien
2016.6.29
C# III: 数据库基本操作的更多相关文章
- ecmall数据库基本操作
ecmall数据库基本操作,为了认真研究ecmall二次开发,我们必须熟悉ecamll的数据库结构,ecmall数据库结构研究熟悉之后,才能去认真分析ecamll的程序结构.从而实现ecmall二次开 ...
- Oracle 数据库基本操作——实用手册、表操作、事务操作、序列
目录: 0. 参考链接与参考手册1. oracle 实用(常用操作)指令2. 数据库基本操作语法 a) 表操作 1)创建表 2)更新表 3)删除表 4)查询 b) 事务操作 c) 序列操作 1)创建序 ...
- MySQL系列:数据库基本操作(1)
1. 登录数据库 mysql -h localhost -u root -p 2. 数据库基本操作 2.1 查看数据库 mysql> SHOW DATABASES; +------------- ...
- MySQL 5.6学习笔记(数据库基本操作,查看和修改表的存储引擎)
1. 数据库基本操作 1.1 查看数据库 查看数据库列表: mysql> show databases; +--------------------+ | Database | +------ ...
- Oracle数据库基本操作(一) —— Oracle数据库体系结构介绍、DDL、DCL、DML
一.Oracle数据库介绍 1.基本介绍 Oracle数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/ ...
- (三)mysql数据库基本操作
(1)SQL语句:结构化查询语句 DDL语句 数据定义语言:数据库丶表丶视图丶索引丶存储过程丶函数丶create drop alter DML语句 数据库操作语言:插入数据insert,删除数据del ...
- laravel基础课程---13、数据库基本操作2(lavarel数据库操作和tp对比)
laravel基础课程---13.数据库基本操作2(lavarel数据库操作和tp对比) 一.总结 一句话总结: 非常非常接近:也是分为两大类,原生SQL 和 数据库链式操作 学习方法:使用时 多看手 ...
- laravel基础课程---10、数据库基本操作(如何使用数据库)
laravel基础课程---10.数据库基本操作(如何使用数据库) 一.总结 一句话总结: 1.链接数据库:.env环境配置里面 2.执行数据库操作:DB::table('users')->up ...
- laravel5.2数据库基本操作
laravel5.2数据库基本操作 百牛信息技术bainiu.ltd整理发布于博客园 use Illuminate\Database\Eloquent\Model; use Illuminate\Da ...
随机推荐
- ElasticSearch安装SQL插件
ElasticSearch安装SQL插件下载地址(中国大佬开发的,膜拜ing):https://github.com/NLPchina/elasticsearch-sql 1.记得选择和自己Elast ...
- API---注册表编程
首先来认识一下键,项,值吧: 左边有五个根键: HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USER HKEY_CURREN ...
- POJ2828 Buy Tickets 树状数组
Description Railway tickets were difficult to buy around the Lunar New Year in China, so we must get ...
- Cocos2d-x 学习笔记(22) TableView
[Cocos2d-x 学习笔记 ]目录 1. 简介 TableView直接继承了ScrollView和ScrollViewDelegate.说明TableView能实现ScrollView拖动cont ...
- mysql连接方法
一.MySQL 连接本地数据库,用户名为“root”,密码“123”(注意:“-p”和“123” 之间不能有空格) mysql -h localhost -u root -p123或mysql -u ...
- javascript学习总结之Object.assign()方法详解
最近再写ES6的文章时候发现自己对Object.assign()方法不太了解,之前也没有接触过所以就就查阅了相关的资料,为了自己以后肯能会用到以及对知识进行巩固,所以在这里记录下自己学习的点点滴滴,毕 ...
- Github带来的不止是开源,还有折叠的认知
如果第二次看到我的文章,欢迎右侧扫码订阅我哟~
- .NET Framework概述
1.NET Framework是为其运行的应用程序提供各种服务的托管执行环境,它包括两个主要组件:(1).公共语言运行时 (CLR),(2)..NET Framework 类库: 2.NET Fram ...
- SpringBoot 配置提示功能
目的 配置自动提示的辅助功能可以让配置写起来更快,准确率大大提高. springboot jar 包含提供所有支持的配置属性细节的元数据文件.文件的目的是为了让 IDE 开发者在用户使用 applic ...
- Enum枚举学习- java5之前和之后的写法
enum枚举 JDK1.5以前枚举的写法 /** * java5.0以前,定义枚举类.类中的对象是有限的 * @author amber * */ public class Season { priv ...