ADO.NET笔记

一、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;
}

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