------------恢复内容开始------------
1、ExcuteReader
using System; using System.Data.SqlClient; using System.Text; namespace Demo { class Program { static void Main() { // 连接字符串 string connStr = "server=127.0.0.1;uid=sa;pwd=123456;database=Demo"; SqlConnection conn = new SqlConnection(connStr); conn.Open(); Console.WriteLine("连接完成"); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = "select * from [user]";//搜索用户表 using (SqlDataReader reader = cmd.ExecuteReader())//提供一种从 SQL Server 数据库读取行的只进流的方式。此类不能被继承。 { while (reader.Read())//读取获取结果集里面所有行信息(Read: 如果存在多个行,则为 true;否则为 false。) { Console.WriteLine("用户名:{0} id:{1} 年龄:{2} 班级id:{3}", reader.GetString(0), reader.GetInt32(1), reader.GetInt32(2), reader.GetInt32(3)); } } } conn.Close(); Console.ReadLine(); } } }
2、sql注入
这样也登陆成功了
再代码执行完毕后,由于--的原因,代码被注释
解决方法,使用变量:
陷阱:
当参数为0时,会把它看成sqldbtype参数,所以请改用:
AddWithValue
3、dataset(离线的数据集) datatable
using System; using System.Data; using System.Data.SqlClient; using System.Text; namespace Demo { class Program { static void Main() { // 创建一个内存的数据集 DataSet ds = new DataSet("ds1"); // 创建一个内存表 DataTable dt1 = new DataTable("dt1"); //将表放到上面的数据集内 ds.Tables.Add(dt1); // 为表定义一些列 DataColumn dcName = new DataColumn("Name", typeof(string)); DataColumn dcAge = new DataColumn("Age", typeof(int)); DataColumn dcId = new DataColumn("Id", typeof(int)); // 列放进表里 dt1.Columns.AddRange(new DataColumn[] { dcId, dcName, dcAge }); // 给表添加数据 dt1.Rows.Add(1, "CCC", 15); dt1.Rows.Add(2, "5C5C", 12); dt1.Rows.Add(3, "C6C", 13); foreach(DataTable tb in ds.Tables) { foreach(DataRow dataRow in tb.Rows) { Console.WriteLine(dataRow[0] + "--" + dataRow[1] + "--" + dataRow[2]); } } Console.ReadLine(); } } }
------------恢复内容结束------------