数据库准备
CREATE TABLE TBLUSER (
ID INT IDENTITY(1,1) PRIMARY KEY,
USERNAME NVARCHAR(50) NOT NULL UNIQUE,
PASSWORD NVARCHAR(50) NOT NULL,
NAME NVARCHAR(50),
GENDER NVARCHAR(10),
BIRTHDAY DATE,
CREATEDATE DATETIME DEFAULT GETDATE()
);
INSERT INTO TBLUSER (USERNAME, PASSWORD, NAME, GENDER, BIRTHDAY, CREATEDATE)
VALUES
('2010120', '123456', '张三', '男', '1990-01-01', GETDATE()),
('2010121', '123456', '李四', '男', '1991-02-02', GETDATE()),
('2010122', '123456', '王五', '男', '1992-03-03', GETDATE()),
('2010123', '123456', '赵六', '女', '1993-04-04', GETDATE()),
('2010124', '123456', '孙七', '女', '1994-05-05', GETDATE()),
('2010125', '123456', '周八', '男', '1995-06-06', GETDATE()),
('2010126', '123456', '吴九', '女', '1996-07-07', GETDATE()),
('2010127', '123456', '郑十', '男', '1997-08-08', GETDATE()),
('2010128', '123456', '冯十一', '女', '1998-09-09', GETDATE()),
('2010129', '123456', '陈十二', '男', '1999-10-10', GETDATE());
ADO连接数据库
using System.Data.SqlClient;
namespace ADO
{
public class Program
{
static void Main(string[] args)
{
//连接数据库1-创建连接字符串
string connectionString = "Data Source=WLQ-CP\\SQLEXPRESS01;Initial Catalog=TestDB;Integrated Security=True";
//连接数据库2-创建连接对象
using (SqlConnection connection = new SqlConnection(connectionString))
{
//连接数据库3-打开连接
connection.Open();
//通过调用ExecuteReader()方法,将给定的sql语句在服务端执行
using (SqlCommand command = new SqlCommand("SELECT * FROM TBLUSER", connection))
{
using (SqlDataReader reader = command.ExecuteReader())
{
if (reader.HasRows)
{
while (reader.Read())
{
for (int i = 0; i<reader.FieldCount; i++)
{
//当遇到数据库中的null值,通过reaser,GetVaule()或者reader[]索引器来获取值,拿到的是DBNULL.value,不是C#的null,而DBNULL.valuede ToString ()方法返回的是空字符串,所以最终并没有报错
Console.WriteLine(reader.GetValue(i));
// Console.WriteLine(reader["ID"]);
// Console.WriteLine(reader[i].ToString());
}
}
}
else {
Console.WriteLine("没有查询任何数据");
}
}
}
}
}
}
}
DataReader的特点:
1.DataReader是只读,只进。只能通过reader读取数据,不能修改,reader只能一条一条向前移动,不能向后,也不能跳跃。
2.使用reader时必须保持连接是打开状态,当reader使用完毕后,必须把datareader关闭,释放,同时关闭释放连接对象
3.默认情况下DataReader要求独占一个连接对象。
using System.Data.SqlClient;
namespace ADO
{
public class Program
{
static void Main(string[] args)
{
//连接数据库1-创建连接字符串
string connectionString = "Data Source=WLQ-CP\\SQLEXPRESS01;Initial Catalog=TestDB;Integrated Security=True";
//连接数据库2-创建连接对象
using (SqlConnection connection = new SqlConnection(connectionString))
{
//连接数据库3-打开连接
connection.Open();
//通过调用ExecuteReader()方法,将给定的sql语句在服务端执行
String sql = "select count(*) from tbluser where username='2010120' and password='123456'";
using (SqlCommand command = new SqlCommand(sql, connection))
{
SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
int count = reader.GetInt32(0); // 读取第一列的值,即count(*)
Console.WriteLine($"满足条件的用户数量: {count},登录成功");
}
}
else
{
Console.WriteLine("没有查询任何用户数据");
}
}
}
}
}
}
通过ado.net向表中插入一条数据
using System.Data.SqlClient;
namespace ADO
{
public class Program
{
static void Main(string[] args)
{
//连接数据库1-创建连接字符串
string connectionString = "Data Source=WLQ-CP\\SQLEXPRESS01;Initial Catalog=TestDB;Integrated Security=True";
//连接数据库2-创建连接对象
using (SqlConnection connection = new SqlConnection(connectionString))
{
//连接数据库3-打开连接
connection.Open();
//通过调用ExecuteReader()方法,将给定的sql语句在服务端执行
String sql = string.Format("insert into tbluser(id,username) values (N'{0}',N'{1}')", 11, "张三");
using (SqlCommand command = new SqlCommand(sql, connection))
{
int r=command.ExecuteNonQuery();
if(r>0)
{
Console.WriteLine("插入成功!");
}
else
{
Console.WriteLine("插入了"+r+"行");
}
}
}
}
}
}
以下语句返回的是新增的ID编号
insert into tbluser(username) output inserted.ID values ('小明')
通过ado.net向表中删除一条数据
using System.Data.SqlClient;
namespace ADO
{
public class Program
{
static void Main(string[] args)
{
//连接数据库1-创建连接字符串
string connectionString = "Data Source=WLQ-CP\\SQLEXPRESS01;Initial Catalog=TestDB;Integrated Security=True";
//连接数据库2-创建连接对象
using (SqlConnection connection = new SqlConnection(connectionString))
{
//连接数据库3-打开连接
connection.Open();
//通过调用ExecuteReader()方法,将给定的sql语句在服务端执行
String sql = string.Format("delete from tbluser where id={0}", 11);
using (SqlCommand command = new SqlCommand(sql, connection))
{
int r=command.ExecuteNonQuery();
if(r>0)
{
Console.WriteLine("成功删除"+r+"条数据!");
}
else
{
Console.WriteLine("删除失败");
}
}
}
}
}
}
通过ado.net向表中更新一条数据
using System.Data.SqlClient;
namespace ADO
{
public class Program
{
static void Main(string[] args)
{
//连接数据库1-创建连接字符串
string connectionString = "Data Source=WLQ-CP\\SQLEXPRESS01;Initial Catalog=TestDB;Integrated Security=True";
//连接数据库2-创建连接对象
using (SqlConnection connection = new SqlConnection(connectionString))
{
//连接数据库3-打开连接
connection.Open();
//通过调用ExecuteReader()方法,将给定的sql语句在服务端执行
String sql = "UPDATE tbluser SET username = '李四' WHERE id = 10";
using (SqlCommand command = new SqlCommand(sql, connection))
{
int r = command.ExecuteNonQuery();
if (r>0)
{
Console.WriteLine("成功更新"+r+"条数据!");
}
else
{
Console.WriteLine("更新失败");
}
}
}
}
}
}