使用ADO.NET访问数据库
目录
ADO.NET 概念
//负责连接数据库
Connection
//负责对数据库执行命令(运算数据)
Command
//负责读取数据库传过来的数据
DataReader
ADO.NET 的主要组件
.NET 数据提供程序类型
实操
using System;
using System.Data.SqlClient;
namespace db110720211102
{
internal class Program
{
public static void Main(string[] args)
{
String connStr = "";
//目标:获得连接对象
SqlConnection conn = new SqlConnection(connStr);
Console.WriteLine(conn);
//卡顿
Console.ReadKey();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
namespace db110720211102
{
class Program
{
static void Main(string[] args)
{
//先定义
String connStr = "Data Source=.;Initial Catalog=db;Persist Security Info=True;User ID=sa;Password=root123456";
//目标:获得连接对象
SqlConnection conn = new SqlConnection(connStr);
Console.WriteLine(conn);
conn.Open();
//卡顿
Console.ReadKey();
}
}
}
异常处理
using System;
using System.Data.SqlClient;
namespace db110720211102
{
internal class Program
{
public static void Main(string[] args)
{
//先定义
String connStr = "Data Source=.;Initial Catalog=db;Persist Security Info=True;User ID=sa;Password=root123456";
//目标:获得连接对象
SqlConnection conn = new SqlConnection(connStr);
Console.WriteLine(conn);
//异常处理演练
try
{
//可能会出问题的代码
//打开连接对象
conn.Open();
//执行相关操作
Console.WriteLine("增删改查");
//关闭连接对象
conn.Close();
}
catch(Exception)
{
//如果发生异常,就会来到这里
Console.WriteLine("数据库连接发生异常");
}
//卡顿
Console.ReadKey();
}
}
}
增删改
ExecuteNonQuery()
可以获得一个数据朗读者,有行有列
ExecuteReader()
获得一个数据表中的首行首列的数据
ExecuteScalar()
Command 主要方法
演示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
//获得连接对象
String connStr = "Data Source=.;Initial Catalog=db;Integrated Security=True";
//获得对象
SqlConnection conn = new SqlConnection(connStr);
//获得sql语句
String sql = "select count(1) from student";
//获得执行者(sql语句,连接对象)
SqlCommand cmd = new SqlCommand(sql,conn);
//打开连接
conn.Open();
//让执行者干活(增删改,获得查询的所有的数据,获得表格中的首行首列的数据)
object o = cmd.ExecuteScalar();
//通过拆箱还原数据
int intNum = (int)o;
//打印获得的结果
Console.WriteLine(intNum);
//关闭连接
conn.Close();
//卡顿
Console.ReadKey();
}
}
}
命名规范
密码登陆
sql用户名密码登陆
String connStr = "Data Source=.;Initial Catalog=GG11071102Practice;Persist Security Info=True;User ID=sa;Password=root123456";
String connStr = "Data Source=.;Initial Catalog=连接的数据库名称;Persist Security Info=True;User ID=用户名;Password=密码";
Win登录
String connStr = "Data Source=.;Initial Catalog=db;Integrated Security=True";
String connStr = "Data Source=.;Initial Catalog=db;Integrated Security=True";
HasRows 可以判断表中是否有数据
SqlDataReader
Reaber 使用方法
//获得连接字符串
String connStr =
"Data Source=.;Initial Catalog=db;Persist Security Info=True;User ID=sa;Password=root123456";
//获得执行者
SqlConnection conn = new SqlConnection(connStr);
//获得sql 语句
String sql = "Select count(1) from student;";
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
bool hasZhi = reader.HasRows;
Console.WriteLine(hasZhi);
查询表格中是否有数据
using System;
using System.Data.SqlClient;
namespace db11071104
{
internal class Program
{
public static void Main(string[] args)
{
//获得连接字符串
String connStr =
"Data Source=.;Initial Catalog=db;Persist Security Info=True;User ID=sa;Password=root123456";
//获得执行者
SqlConnection conn = new SqlConnection(connStr);
//获得sql 语句
String sql = "Select count(1) from student;";
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
bool hasZhi = reader.HasRows;
Console.WriteLine(hasZhi);
conn.Close();
Console.ReadKey();
}
}
}
HasRows 查询表格中是否有数据 返回值是布尔类型的
Reader 查询第一行的数据
循环拿到数据库里的姓名
using System;
using System.Data.SqlClient;
namespace db11071104
{
internal class Program
{
public static void Main(string[] args)
{
//获得连接字符串
String connStr =
"Data Source=.;Initial Catalog=db;Persist Security Info=True;User ID=sa;Password=root123456";
//获得执行者
SqlConnection conn = new SqlConnection(connStr);
//获得sql 语句
String sql = "Select * from student;";
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
bool isReader = reader.Read();
while (isReader)
{
String name = (String) reader["name"];
Console.WriteLine(name);
//换行
isReader = reader.Read();
}
//使用完后放走
reader.Close();
conn.Close();
Console.ReadKey();
}
}
}
输出整个表的数据
using System;
using System.Data.SqlClient;
namespace db11071104
{
internal class Program
{
public static void Main(string[] args)
{
//获得连接字符串
String connStr =
"Data Source=.;Initial Catalog=db;Persist Security Info=True;User ID=sa;Password=root123456";
//获得执行者
SqlConnection conn = new SqlConnection(connStr);
//获得sql 语句
String sql = "Select * from student;";
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
//判断光标有没有挪动到下一行
bool isReader = reader.Read();
while (isReader)
{
int id = (int) reader["id"];
String name = (String) reader["name"];
int intNum = (int)reader["teacherId"];
Console.WriteLine("{0} {1} {2}",id,name,intNum);
//换行
isReader = reader.Read();
}
//使用完后放走
reader.Close();
conn.Close();
Console.ReadKey();
}
}
}
输出结果
新知识点StringBuildere
和java里的很想 有 Append(添加的值)末尾添加 和 中部添加 Insert(插入数据的下标,插入的数据); 删除数据 Remove(从那个地方开始删除,删除的长度)
替换数据 Replace(旧数据,新数据)
但没有String 的分割之类的方法
可以用 ToString 的方法改回String
using System;
using System.Data.SqlClient;
namespace db11071104
{
internal class Program
{
public static void Main(string[] args)
{
//获得连接字符串
String connStr =
"Data Source=.;Initial Catalog=db;Persist Security Info=True;User ID=sa;Password=root123456";
//获得执行者
SqlConnection conn = new SqlConnection(connStr);
//获得sql 语句
String sql = "Select * from student;";
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
//判断光标有没有挪动到下一行
bool isReader = reader.Read();
while (isReader)
{
int id = (int) reader["id"];
String name = (String) reader["name"];
int intNum = (int)reader["teacherId"];
Console.WriteLine("{0} {1} {2}",id,name,intNum);
//换行
isReader = reader.Read();
}
//使用完后放走
reader.Close();
conn.Close();
Console.ReadKey();
}
}
}
案例
通讯录
首先