码迷,mamicode.com
首页 > Web开发 > 详细

ADO.NET笔记

时间:2018-01-03 22:39:46      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:sum   地址   esc   cut   read   gpo   pen   object   open   

一、ADO.NET (Access Data Object, 数据访问对象)
.NET操作数据库的一组类
1. DataSet (数据集)
2. .NET数据提供程序 (Data Provider)
2.1. Connection
2.2. Command
2.3. DataReader
2.4. DataAdapter


二、Connection (连接对象)
1. 创建:
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "连接字符串";
// 或:
SqlConnection conn = new SqlConnection(连接字符串);


2. 打开连接:
conn.Open();

可能产生的异常:
2.1. 连接失败:地址不对,服务没开,没目标数据库
2.2. xx 登录失败:账号不对、权限不足
2.3. 不支持关键字 xxx:连接字符串错误


3. 连接字符串:
3.1. 地址、数据库、账号、密码
3.2. Data Source=服务器地址; Initial Catalog=数据库名; User Id=账号; Password=密码
3.3. server=服务器地址; database=数据库名; uid=账号; pwd=密码


4. 连接实例:
string connStr = "server=.;database=MySchool;uid=sa;pwd=sa";
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
conn.Close();


三、Command (命令执行对象)
1. 创建语法:
SqlCommand comm = new SqlCommand();
comm.CommandText = "SQL语句"; // 要执行什么SQL?
comm.Connection = conn; // 在哪执行?
// 或简写为:
SqlCommand comm = new SqlCommand(sql, conn);


2. 执行
2.1. ExecuteScalar()
2.2. ExecuteReader()
2.3. ExecuteNonQuery()


3. comm.ExecuteScalar():
3.1. Command开始执行目标的SQL语句,并获取数据库返回的结果
3.2. 只获取结果中的首行首列
3.3. 适用情况:
3.3.1. 聚合函数:count、sum、max、min、avg
3.3.2. 根据条件查询某一列的值


四、示例:查询所有学生数量
// 1. 创建连接并打开
string connStr = "server=.;database=MySchool;uid=sa;pwd=sa";
SqlConnection conn = new SqlConnection(connStr);
conn.Open();

// 2. 创建执行对象
string sql = "select count(1) from Student";
SqlCommand comm = new SqlCommand(sql, conn);

// 3. 执行并返回结果
int count = (int)comm.ExecuteScalar();
// 或:
int count = Convert.ToInt32(comm.ExecuteScalar());

// 4. 关闭连接
conn.Close();


五、示例:根据年级编号查询年级名称
public string SelectGradeNameById(int gradeId)
{
string name = null;

// SQL语句
string sql = string.Format("SELECT GradeName FROM Grade WHERE GradeId={0}", gradeId);
SqlConnection conn = new SqlConnection(connStr); // 1. 创建连接
SqlCommand comm = new SqlCommand(sql, conn); // 2. 创建执行对象
conn.Open(); // 3. 打开连接
name = comm.ExecuteScalar().ToString(); // 4. 执行并获取结果
conn.Close(); // 5. 关闭连接

return name;
}


六、示例:根据学生编号查询学生姓名
public string SelectStudentNameByNo(string studentNo)
{
string name = null;

//SQL语句
string sql = string.Format("SELECT StudentName FROM Student WHERE StudentNo=‘{0}‘", studentNo);

SqlConnection conn = new SqlConnection(connStr); // 1. 创建连接
SqlCommand comm = new SqlCommand(sql, conn); // 2. 创建执行对象
conn.Open(); // 3. 打开连接
name = comm.ExecuteScalar().ToString(); // 4. 执行并获取结果
conn.Close(); // 5. 关闭连接

return name;
}


七、SQL执行常见错误
1. 不支持关键 xxx
2. xxx 附近有语法错误
SQL语句错了
3. 列名 xxx 无效
SQL语句错了
4. Command需要一个已经打开的Connection
连接未打开


八、示例:管理员登录 (根据账号和密码,查询人数)
public int AdminLogin(string username, string password)
{
int count = -1;

// SQL语句
string sql = " SELECT COUNT(1) FROM Admin WHERE Username=‘{0}‘ AND Password=‘{1}‘ ";
sql = string.Format(sql, username, password);

SqlConnection conn = new SqlConnection(connStr); // 1. 创建连接
SqlCommand comm = new SqlCommand(sql, conn); // 2. 创建执行对象
conn.Open(); // 3. 打开连接
count = Convert.ToInt32(comm.ExecuteScalar()); // 4. 执行并获取结果
conn.Close(); // 5. 关闭连接

return count;
}

ADO.NET笔记

标签:sum   地址   esc   cut   read   gpo   pen   object   open   

原文地址:https://www.cnblogs.com/lecj2498/p/8185517.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!