数据库应用程序开发基础篇—— .NET中SQL Server数据库的操作C#篇之一
数据库应用程序开发基础篇—— .NET中SQL Server数据库的操作C#篇之一
1.ADO.NET对象模型简介
2.ADO.NET中4个核心组件
对象 | 说明 | 特点 |
Connection | 建立于特定数据库的连接 | 可以自己创建,也可由其他对象自动产生(如DataAdapter) |
Command | 对数据源执行命令 | 透过Connection对象来下达命令,Connection的指向决定操作对象 |
DataAdapter | 用数据源中的查询结果填充DataSet对象 | DataAdapter填充到DataSet中的是断开连接的脱机数据 |
DataReader | 从数据源中读取只读的数据流 | DataReader读取数据必须在维持数据库连接的前提下进行 |
.
类 | SQL类 | OLE DB类 |
Connection | SqlConnection | OleDbConnection |
Command | SqlCommand | OleDbCommand |
DataAdapter | SqlDataAdapter | OleDbDataAdapter |
DataReader | SqlDataReader | OleDbDataReader |
关于两种类库的比较这一话题,作为入门暂时不做讨论,以后再做研究。
3.实例练习SQL Server.NET类库
1)SQL Server.NET类中库上述四个核心类的用法
SqlConnection (String) 如果给定包含连接字符串的字符串,则初始化 SqlConnection 类的新实例。
SqlCommand (String) 用查询文本初始化 SqlCommand 类的新实例。
SqlCommand (String, SqlConnection) 初始化具有查询文本和 SqlConnection 的 SqlCommand 类的新实例。
SqlCommand (String, SqlConnection, SqlTransaction) 使用查询文本、一个 SqlConnection 以及 SqlTransaction 来初始化 SqlCommand 类的新实例。
b.利用C#语言结合SQL Server .NET类库访问SQL Server 2008数据库
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace SQLServerEx1
{class Program{static void Main(string[] args){const string connStr = "server=WANGDINGQIAO-PC;database =DBTest;Integrated Security =true";//连接字符串SqlConnection mySqlConnection = new SqlConnection();mySqlConnection.ConnectionString = connStr;//新建连接对象并设置其连接字符串属性string sqlStr = "select Sno ,Sname from tbl_Student";//SQL语句try{mySqlConnection.Open();//打开连接SqlCommand mycmd = new SqlCommand(sqlStr, mySqlConnection);//新建SqlCommand对象SqlDataReader sdr = mycmd.ExecuteReader();//ExecuteReader方法将 CommandText 发送到 Connection 并生成一个 SqlDataReaderConsole.WriteLine("学号 \t\t\t姓名");while (sdr.Read()){Console.WriteLine("{0}\t\t{1}", sdr[0], sdr[1]);//循环读取数据}sdr.Close();//读取完毕即关闭}catch (SqlException ex){Console.WriteLine(ex.Message);}catch (Exception ex){Console.WriteLine(ex.Message);}finally{mySqlConnection.Close();//关闭连接}}}
}
运行结果:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace SQLServerEx2
{class Program{static void Main(string[] args){const string connStr = "server=WANGDINGQIAO-PC;database =DBTest;Integrated Security =true";SqlConnection mySqlConnection = new SqlConnection(connStr);//新建连接对象string sqlStr = "select * from tbl_Student";//SQL语句try{mySqlConnection.Open();//打开连接SqlDataAdapter sda = new SqlDataAdapter(sqlStr, mySqlConnection);//新建SqlDataAdapter对象DataSet ds = new DataSet();//新建Dataset对象sda.Fill(ds);//填充DataSet对象Console.WriteLine("姓名\t\t性别");int cnt = ds.Tables[0].Rows.Count;//读取行数for (int ix = 0; ix != cnt; ++ix)Console.WriteLine("{0}\t\t{1}", ds.Tables[0].Rows[ix].ItemArray[1],ds.Tables[0].Rows[ix].ItemArray[2]);//循环读取数据 注意索引范围}catch (SqlException ex){Console.WriteLine(ex.Message);}catch (Exception ex){Console.WriteLine(ex.Message);}finally{mySqlConnection.Close();//关闭连接}}}
}
4.利用C#语言结合OLE DB .NET类库访问SQL Server 2008数据库
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Data;
namespace SQLServerEx3
{class Program{static void Main(string[] args){const string connStr = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;"+"Initial Catalog=DBTest;Data Source=WANGDINGQIAO-PC";OleDbConnection myOleDbConnection = new OleDbConnection(connStr);//新建连接对象string sqlStr = "select * from tbl_Student";//SQL语句try{myOleDbConnection.Open();//打开连接OleDbCommand mycmd = new OleDbCommand(sqlStr, myOleDbConnection);//新建OleDbCommand对象OleDbDataReader Olesdr = mycmd.ExecuteReader();//将 CommandText 发送到 Connection 并生成一个 OleDbDataReaderConsole.WriteLine("姓名 \t\t所在系");while (Olesdr.Read()){Console.WriteLine("{0}\t\t{1}", Olesdr[1], Olesdr[4]);//循环读取数据 注意索引值}Olesdr.Close();//读取完毕即关闭}catch (OleDbException ex){Console.WriteLine(ex.Message);}catch (Exception ex){Console.WriteLine(ex.Message);}finally{myOleDbConnection.Close();//关闭连接}}}
}
5.利用C#语言结合第三方与.NET类库连接器 访问MySQL数据库
b.利用OLE DB.NET类库访问MySQL数据库
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using System.Data;
namespace MySQLEx
{class Program{static void Main(string[] args){string conString = "server=localhost; Database=DBTest;user id=root; password=root;";MySqlConnection mySqlConn = new MySqlConnection(conString);string sqlStr = "select * from tbl_Student";//SQL语句try{mySqlConn.Open(); ;//打开连接MySqlDataAdapter msda = new MySqlDataAdapter(sqlStr, mySqlConn);//新建MySqlDataAdapter对象DataSet ds = new DataSet();//新建Dataset对象msda.Fill(ds);//填充DataSet对象Console.WriteLine("姓名\t\t年龄");int cnt = ds.Tables[0].Rows.Count;//读取行数for (int ix = 0; ix != cnt; ++ix)Console.WriteLine("{0}\t\t{1}", turnString(ds.Tables[0].Rows[ix].ItemArray[1].ToString()),turnString(ds.Tables[0].Rows[ix].ItemArray[3].ToString()));//循环读取数据 注意索引范围}catch (MySqlException ex){Console.WriteLine(ex.Message);}catch (Exception ex){Console.WriteLine(ex.Message);}finally{mySqlConn.Close();//关闭连接}}//乱码解决 转换函数public static string turnString(string source){var en = System.Text.Encoding.GetEncoding("latin1");var bs = en.GetBytes(source);var a = System.Text.Encoding.Default.GetString(bs);return a;}}
}
运行结果:
6.参考资料
数据库应用程序开发基础篇—— .NET中SQL Server数据库的操作C#篇之一相关推荐
- 公司招聘软件研发程序员的一道考题--MS SQL Server数据库数据文件页面头部结构...
有一次在招聘C++程序员时,出的一道考题,内容其实就是MS SQL Server数据库数据文件页面头部结构,如下: 有个file.a文件,这个文件以16sec[sec是扇区,每个sec包含512个By ...
- SQL Server无法删除数据库 xxx,因为该数据库当前正在使用(如何删除一个Sql Server数据库)
1.一般情况下删除一个Sql Server数据库: 新建查询→输入"drop database xxx(xxx为数据库名)"→执行. 但有时会报错:无法删除数据库 "li ...
- .mdf数据库恢复mysql_从 mdf ldf 文件恢复sql server 数据库
欢迎进入Windows社区论坛,与300万技术人员互动交流 >>进入 1: 无需新建数据库,直接运行 USE master; GO CREATE DATABASE test ON (FIL ...
- Sql Server数据库中的用户及权限配置,保障数据库安全
最近有个朋友的网站被攻击,漏洞是比较过时的SQL注入,在帮修复的过程中,发现数据库用的是超级管理员用户sa,提高数据安全性和服务器安全性的措施之一便是降低web应用数据库用户的权限,回顾了一下Sql ...
- 在Android中使用SQL server数据库
@[TOC]关于Android中SQL server数据库的使用 在Android中使用SQL server 在Android中,有内置的SQLlite数据库,属于本地存储,其他客户端无法访问,所以就 ...
- Sql Server数据库实现表中字段的列加密研究
1.问题描述 去年6月份的时候做过一个系统,要对里面的一些敏感字段进行一下加密.Sqlserver列加密可以参考官方文档:SQL Server 技术文档 - SQL Server | Microsof ...
- 怎么从 SQL Server 数据库中导出 SQL 语句?
同于直接/备份/恢复 或者 导入/导出 数据库操作. 新版本SQL Server客户端中还可以生成相对应的SQL语句. 非常方便与查看和与其他人共享. 操作步骤如下: 连接上数据库后, 右击数据库, ...
- sqlserver date类型和字符串比较_基于SQL Server数据库搭建主从复制实现读写分离实战演练...
一.课程介绍 读写分离(主从同步)从字面意思就可以理解,就是把对数据库的读操作和写操作分离开.读写分离在网站发展初期可以一定程度上缓解读写并发时产生锁的问题,将读写压力分担到多台服务器上.读写分离的基 ...
- [转载]在SQL Server数据库之间进行数据导入导出,OPENDATASOURCE
需要在c盘下先建立一个data.txt文件,然后在文件的第一行写上你要导出的列,不如说要导出id和name这两列,就在第一行写上 id,name 然后保存,使用下列SQL就可以了,你如果要保持原有的I ...
最新文章
- 2021年大数据Spark(二十一):Spark Core案例-SogouQ日志分析
- 新ITC提交APP常见问题与解决方法(Icon Alpha,Build version,AppIcon120x120)(2014-11-17)
- 正交频分复用(OFDM)初步(原理)
- 二分图-匈牙利算法模板
- VALSE 2020-18 《如何写/审AI领域的论文》笔记
- 变分自编码器系列:VAE + BN = 更好的VAE
- oracle查找异常中断的sqlid方法,Oracle查找锁定对象以及强制解除锁定的方法
- mac下的svn服务器建立
- 【数据结构与算法-java实现】三 Java数组类实现
- Vue文件在VsCode工具中红色波浪线的问题解决方法
- 【Kafka】Kafka Tool 2 使用教程 SASL_PLAINTEXT
- python中的断言
- phpstud使用教程_phpStudy2017使用教程,自定义php版本功能上线!
- Windows Server 2013 安装zune 4.8中文版
- html字数统计,html中利用javascript实现文本框字数的动态计算
- 【GPS】GPS测试环境
- Linux 文件系统与日志分析
- 如何获取彩色图像中的主色彩
- 全文检索服务ElasticSearch
- 基于Java毕业设计学生选拔系统源码+系统+mysql+lw文档+部署软件