ADO.NET介绍
连接数据库
//连接数据库的步骤
//1、创建连接字符串
//string constr = @"Data Source=DESKTOP-FAVDBP3\MSSQLSERVER2014;INITIAL CATALOG=TestSchool;integrated Security=true"; //windows身份连接
//string constr = @"Data Source=DESKTOP-FAVDBP3\MSSQLSERVER2014;Initial Catalog=TestSchool;User ID=123;Password=123"; // 用户名和密码验证
string constr = @"Server=DESKTOP-FAVDBP3\MSSQLSERVER2014;user=123;pwd=123;database=TestSchool "; //之前的老方法使用用户名和密码连接
//2、创建连接对象
SqlConnection con = new SqlConnection(constr);
//测试,打开连接
//3、打开连接
con.Open();
Console.WriteLine("打开连接成功");
//4、关闭连接,释放资源
con.Close();
Console.WriteLine("关闭连接,释放资源");
Console.ReadLine();
通过ado.net向表中插入一条数据
//通过ado.net向表中插入一条数据
string constr = @"server=desktop-favdbp3\mssqlserver2014;user=123;pwd=123;database=testschool";
sqlconnection con = new sqlconnection(constr);
//4、编写sql语句
string sql = "insert into tblscore values('吱吱',78,87)";
//5、创建一个执行sql语句的对象(命令对象)sqlcommand
sqlcommand cmd = new sqlcommand(sql, con);//在con连接上执行sql语句
//3、打开连接(最晚打开,最早关闭,节省资源)
con.open();//
//6、开始执行sql语句(有三个类型)
//executenonquery()只有在执行insert、delete、update时返回受影响的行数,执行任何其他sql语句时永远返回-1
int r = cmd.executenonquery(); //一般当执行insert\delete\update语句时
//cmd.executescalar(); //当执行返回单个结果时
//cmd.executereader(); //当查询出多行多列结果时
console.writeline("成功插入了{0}行数据", r);
console.readkey();
删除一行数据
string constr = @"server=DESKTOP-FAVDBP3\MSSQLSERVER2014;user=123;pwd=123;database=TestSchool";
SqlConnection con = new SqlConnection(constr);
string sql = "delete from TblScore where Id=6";
SqlCommand cmd = new SqlCommand(sql, con);
con.Open();
int r=cmd.ExecuteNonQuery();
Console.WriteLine("成功删除{0}行数据",r);
Console.ReadKey();
修改数据
string constr = @"server=DESKTOP-FAVDBP3\MSSQLSERVER2014;user=123;pwd=123;database=TestSchool";
SqlConnection con = new SqlConnection(constr);
string sql = "update TblScore set math=math-5,English=English-10 where Id=1 ";
SqlCommand cmd = new SqlCommand(sql, con);
con.Open();
int r = cmd.ExecuteNonQuery();
Console.WriteLine("修改了{0}条数据", r);
Console.ReadKey();
数据查询
string constr = @"server=DESKTOP-FAVDBP3\MSSQLSERVER2014;user=123;pwd=123;database=TestSchool";
SqlConnection con = new SqlConnection(constr);
string sql = "select count(*) from TblScore";
SqlCommand cmd = new SqlCommand(sql, con);
con.Open();
//object count=cmd.ExecuteScalar();
object count = Convert.ToInt32(cmd.ExecuteScalar()); //会避免出错
Console.WriteLine("TblScore表中一共有{0}条数据", count);
Console.ReadKey();
SqlDataReader使用
- 方法一
string constr = @"server=DESKTOP-FAVDBP3\MSSQLSERVER2014;user=123;pwd=123;database=TestSchool";
SqlConnection con = new SqlConnection(constr);
string sql = "select * from TblStudent";
SqlCommand cmd = new SqlCommand(sql, con);
con.Open();
//通过调用ExcuteReader()方法,将给定的sql语句在服务器端执行
//执行完毕后,服务器端就已经查询出了数据。但是数是保存在数据库服务器的内存当中,
//并没有返回给应用程序,知识返回给应用程序一个reader对象,这个对象就是用来获取数据的对象。
SqlDataReader reader = cmd.ExecuteReader();
//接下来就要通过reader对象一条一条获取数据
//1.在获取数据之前,先判断一下本次执行查询后,是否查询到数据
if(reader.HasRows)//如果有数据。则为true,否则为false
{
//2.如果有数据,那么接下来就要一条一条获取数据
//每次获取数据之前,都要先调用reader.Read()方法,向后移动到一条数据
//如果成功移动到了某条数据之上,则返回true,否则返回false
while(reader.Read())
{
//获取当前reader指向的数据
//reader.FieldCount,可以获取当前查询语句查询出的列的个数
for (int i = 0; i < reader.FieldCount;i++)
{
//当遇到数据库中的null值时,通过reader.GetValue()或reader[]索引器来获取列的值,
//拿到的是DBNull.Value,不是C#的null,而DBNull.Value的ToString()方法是返回空字符串,所以没有报错。
//但是通过reader[]索引器,可以使用列名来获取列的值
Console.Write(reader[i] + " ");
//Console.WriteLine(reader["Id"]);
//GetValue()只能通过索引来获取列的值
//Console.WriteLine(reader.GetValue(i) + " ");
//根据列名称获取列的索引
//reader.GetOrdinal();
//通过下面方法得到的是数据表中的类型,不是object类型,使用方便
//reader.Getxxxxxx();//使用强类型读取列中的数据。
}
Console.WriteLine();
}
}
else
{
Console.WriteLine("没有查询到任何数据");
}
Console.ReadLine();
- 方法二:强制类型读取数据
string constr = @"server=DESKTOP-FAVDBP3\MSSQLSERVER2014;user=123;pwd=123;database=TestSchool";
SqlConnection con = new SqlConnection(constr);
string sql = "select * from TblStudent";
SqlCommand cmd = new SqlCommand(sql, con);
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
//注意:通过reader.Getxxx()方式来获取表中的数据,如果数据为null那么就报异常。
//此时需要手写代码来判断数据是否为null
while (reader.Read())
{
//Id,Name,Gender,Address,Age
Console.Write(reader.GetInt32(0) + "\t\t");
Console.Write(reader.GetString(1) + "\t\t");
Console.Write(reader.GetString(2) + "\t\t");
Console.Write(reader.IsDBNull(3) ? "NULL\t\t" : reader.GetString(3) + "\t\t");
Console.Write(reader.IsDBNull(4) ? "NULL\t\t" : reader.GetInt32(4) + "\t\t");
Console.WriteLine();
}
}
Console.ReadKey();