
第一章 数据库的连接namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { string sql server.;uidsa;pwd123;databaseAAA; using (SqlConnection con new SqlConnection(sql))//创建数据库连接对象 { try { con.Open();//打开链接 Console.WriteLine(数据库连接成功); } catch (Exception ex) { Console.WriteLine(ex.Message);//获取异常 } finally { con.Close();//关闭连接 } //获取链接的相关参数 Console.WriteLine(con.ConnectionString); Console.WriteLine(con.State); } } } }步骤一string sql“数据库的账户密码和所需要调用的数据库”步骤二创建数据库的连接对象 SqlConnection并且new一个新对象在无参里面放入刚刚string的数据库变量名步骤三打开数据库使用con.open() 为了防止出错使用try catch语句做一个异常捕获步骤四为了防止数据库一直开启 finally中加入con.close关闭数据库相关参数connectionstring可以拿到数据库的用户信息state可以拿到当前数据库的状态第二章 Command的增删改查Command 的常用属性CommandTex 获取或设置对数据库执行的T-Sql命令Connection 获取或者设置连接数据库的Connection对象Command 的常用方法ExecuteNoQuery:执行SQL语句并返回受影响的行数为int值ExcuteReader:执行查询命令并且DateReader对象ExecuteScalar:执行查询命令返回结果集中首航首列的值如果需要判断是否执行需要强制转换为int值类型eg:using (SqlConnection con new SqlConnection(conStr))//创建数据库连接对象 { try { con.Open();//打开链接 //Console.WriteLine(数据库连接成功); //写SQL语句 string sql string.Format(insert into Book values(hhee,2000,黑鬼,武侠)); //创建命令对象 SqlCommand cmd new SqlCommand(sql, con);//先放语句再放对象 //执行 int count cmd.ExecuteNonQuery();//ExcuteNonQuery是into类型的值 if (count0) { Console.WriteLine(添加数据成功); } else { Console.WriteLine(数据添加失败); } }增删改查其实就是修改SQL的语句其他的不用改登录界面使用ExecuteScalarusing System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 登录程序 { internal class Program { static void Main(string[] args) { SqlConnection con new SqlConnection(server.;uidsa;pwd123;databaseAAA);//一步到省略了string try { con.Open(); string SQL string.Format(select * from Book where bPrice 102 and btId爱情小说); SqlCommand com new SqlCommand(SQL, con); //判断是否添加成功 int count Convert.ToInt32(com.ExecuteScalar()); if (count 0) { Console.WriteLine(登录成功); } else { Console.WriteLine(登录失败); } } catch (Exception e) { Console.WriteLine(e.Message); } finally { con.Close(); } } } }防注入提醒为了防止注入我们可以给参数赋值并且在SQL语句的字段加上变量 再使用com.Paramaters.Addwithvalue(SQL值段,变量名)注意变量名一定要提前命名或者接收值string SQL string.Format(select * from Book where bPrice bPrice and btIdbtId); SqlCommand com new SqlCommand(SQL, con); //防注入 给参数进行赋值 com.Parameters.AddWithValue(bPrice,bPrice); com.Parameters.AddWithValue(bPrice,bPrice);注意如果没有在对象前面使用using的话 那么在后面就要加上finally{con.close}来关闭程序 释放内存空间考虑到冗杂问题可以对连接数据库的行为进行封装处理例如创建方法类CUD 然后传入SQL语句 再做判断命名一个int类型的值来接CUD第三章 DateReader优点边读取边修改数据方法Read使得datareader前进到下一条记录如果有下一条记录返回true否则返回falseClose 关闭datareader对象Getname获取指定列的名称con.Open();//打开 string sql string.Format(SELECT * FROM Book);//输SQL语句 SqlCommand cmd new SqlCommand(sql, con); using (SqlDataReader dr cmd.ExecuteReader()) { while (dr.Read()) { } }后面通过dr.出对象第四章 DataSet 内存虚拟数据库断开式核心// 创建内存数据集 DataSet ds new DataSet(MyDataSet); // 创建数据表并加入数据集 DataTable table new DataTable(MyTable); ds.Tables.Add(table); // 添加列 table.Columns.Add(ID, typeof(int)); table.Columns.Add(Name, typeof(string)); // 添加行数据 table.Rows.Add(1, 张三); // 修改、删除、筛选行 DataRow row table.Rows[0]; row[Name] 李四; table.Rows[1].Delete(); DataRow[] filter table.Select(ID 0);1通过MySqlDataAdapter.Fill()把数据库数据填充到 DataSet2 修改 DataSet 内数据通过 DataAdapter 同步更新到数据库3. 加载 XML 文件 / 数据流生成 DataSet第五章 MySqlDataAdapterstring sql select * from users; MySqlDataAdapter da new MySqlDataAdapter(sql, con); DataSet ds new DataSet(); // 填充数据给数据表命名useInfo da.Fill(ds, useInfo); // 读取内存表数据 DataTable table ds.Tables[useInfo]; foreach(DataRow row in table.Rows) { Console.WriteLine(row[username]); }1Fill ()查询数据库自动创建 Command、打开连接数据填充到 DataSet2Update ()将 DataSet 中新增 / 修改 / 删除的数据同步回数据库。第六章 MySQL 事务处理 MySqlTransactionMySqlConnection con new MySqlConnection(connStr); con.Open(); // 开启最高隔离级别事务 MySqlTransaction tran con.BeginTransaction(IsolationLevel.Serializable); try { // 扣钱SQL MySqlCommand com1 new MySqlCommand(update account set BalanceBalance-500 where namezhangsan, con); com1.Transaction tran; com1.ExecuteNonQuery(); // 加钱SQL MySqlCommand com2 new MySqlCommand(update account set BalanceBalance500 where namelisi, con); com2.Transaction tran; com2.ExecuteNonQuery(); tran.Commit(); // 全部执行成功提交 } catch(Exception ex) { tran.Rollback(); // 出错回滚 Console.WriteLine(ex.Message); } finally { con.Close(); }1打开数据库连接2BeginTransaction()开启事务指定隔离级别3所有 Command 绑定当前 Transaction 执行4无异常执行Commit()提交捕获异常执行Rollback()回滚。第七章 DBHelper 数据库通用工具类封装统一管理连接字符串、重复数据库操作代码减少冗余提升维护性。ExecuteNonQuery()增删改操作自动释放连接ExecuteScalar()单行单列聚合查询ExecuteReader()返回数据流读取器可扩展 FillDataSet () 方法。// 连接字符串 string connStr serverlocalhost;uidroot;pwdroot;databasedb1;port3306; // 实例化工具类 DBHelper db new DBHelper(connStr); string sql select count(*) from users where usernamelisi and password123; int count Convert.ToInt32(db.ExecuteScalar(sql)); if(count 0) Console.WriteLine(登录成功); 五、核心知识点总结速记本周核心知识点总结1.连接 MySQL 必备引入MySql.Data.dllusing MySql.Data.MySqlClient;2.Connection 负责通路Command 负责执行 SQL3.DataReader连接、只读、流式读取DataSet断开、内存完整数据表4.DataAdapter 是数据库和 DataSet 的桥梁Fill 填充、Update 更新5.事务保证多 SQL 原子性Commit 提交Rollback 回滚6.DBHelper 封装通用操作避免重复写连接、关闭代码7.数据库连接使用后必须 Close推荐 try-finally/using 自动释放资源。