zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    P3015 [USACO11FEB]最好的括号Best Parenthesis
    P1944 最长括号匹配_NOI导刊2009提高(1)
    P2328 [SCOI2005]超级格雷码
    P2308 添加括号
    P5657 格雷码【民间数据】
    P2196 挖地雷
    P5020 货币系统
    括号序列模型--序列dp--U86873 小Y的精灵国机房之旅
    P1033 自由落体
    P1017 进制转换
  • 原文地址:https://www.cnblogs.com/lecj2498/p/8185517.html
Copyright © 2011-2022 走看看