请问 b⼀s结构 C# 是如何访问数据库? 最好能给一段代码 再说明一下哦

数据库是 sql server
2024-11-22 17:44:29
推荐回答(1个)
回答(1):

class Program
{
static void Main(string[] args)
{
//OpenConnection();
//AddRecord();
//DelRecord();
//SoftDelRecord();
//QuertSingle();
//QueryByDataReader();
//QueryByDataAdapter2();
Console.ReadKey();
}

///


/// 测试连接通道
///

public static void OpenConnection()
{
//1.连接通道的连接字符串
string conStr = @"Persist Security Info=False;Trusted_Connection=True;database=temp;server=(local)";
//2.连接通道对象
SqlConnection conn = new SqlConnection(conStr);
//3.打开通道
conn.Open();
//4.关闭通道
conn.Close();
//5.释放资源
conn.Dispose();

//测试
Console.WriteLine("******************************");
}

///
/// 新增记录
///

public static void AddRecord()
{
//接收新增受影响的行数
int res = -1;
string conStr = @"Persist Security Info=False;Trusted_Connection=True;database=temp;server=(local)";
SqlConnection conn = new SqlConnection(conStr);
//sql语句
string sqlStr = "insert into T_Employee(FNumber,FName,FAge,FSalary) values('ki401','Amy','24','5600.00')";
//新建命令对象
SqlCommand cmd = new SqlCommand(sqlStr, conn);
conn.Open();
//调用方法去数据库执行sql语句
res = cmd.ExecuteNonQuery(); //此方法用于增删改(非查询语句),返回受影响的行数(int)
cmd.Dispose();
conn.Close();
if (res > 0)
{
Console.WriteLine("新增成功!!");
}
else
{
Console.WriteLine("新增失败!!");
}
conn.Dispose();
}

///
/// 删除记录
///

public static void DelRecord()
{
int res = -1;
string conStr = @"Persist Security Info=False;Trusted_Connection=True;database=temp;server=(local)";
SqlConnection conn = new SqlConnection(conStr);
string sqlStr = "delete T_Employee where fname = 'Amy'";
SqlCommand cmd = new SqlCommand(sqlStr, conn);
conn.Open();
res = cmd.ExecuteNonQuery();
cmd.Dispose();
conn.Close();
if (res > 0)
{
Console.WriteLine("删除成功!!!");
}
else
{
Console.WriteLine("删除失败!!!");
}
conn.Dispose();
}

///
/// 软删除(更新)记录
/// 将表中FisDel改为true
///

public static void SoftDelRecord()
{
int res = -1;
string conStr = @"Persist Security Info=False;Trusted_Connection=True;database=temp;server=(local)";
SqlConnection conn = new SqlConnection(conStr);
string sqlStr = "update T_Employee set fisdel=1 where fid=1";
SqlCommand cmd = new SqlCommand(sqlStr, conn);
conn.Open();
res = cmd.ExecuteNonQuery();
cmd.Dispose();
conn.Close();
if (res > 0)
{
Console.WriteLine("软删除成功!!!");
}
else
{
Console.WriteLine("软删除失败!!!");
}
conn.Dispose();
}

///
/// 查询单个值
///

public static void QuertSingle()
{
string conStr = @"Persist Security Info=False;Trusted_Connection=True;database=temp;server=(local)";
SqlConnection conn = new SqlConnection(conStr);
conn.Open();
//string sqlStr = "select count(*) from T_Employee";
string sqlStr = "select * from T_Employee";
SqlCommand cmd = new SqlCommand(sqlStr, conn);
Object obj = cmd.ExecuteScalar(); //调用此方法,获得查询语句在数据库执行后得到的结果集的第一个单元格的值,返回值为Object类型
cmd.Dispose();
conn.Close();
Console.WriteLine(obj.ToString());
conn.Dispose();
}

///
/// 查询多行数据(有两种方法)
///

//方法1 -- DataReader,逐行读取数据
//DataReader通过连接通道在数据库维护一个结果集,每次执行Read()方法去数据库的这个结果集中拿取下一行数据
public static void QueryByDataReader()
{
string conStr = @"Persist Security Info=False;Trusted_Connection=True;database=temp;server=(local)";
SqlConnection conn = new SqlConnection(conStr);
conn.Open();
string sqlStr = "select * from T_Employee";
SqlCommand cmd = new SqlCommand(sqlStr, conn);
SqlDataReader dr = cmd.ExecuteReader(); //调用此方法,还获得一个SqlDataReader对象
if (dr.HasRows) //如果结果集中有数据行,则返回true
{
while (dr.Read()) //Read方法:如果读到下一行数据,则返回true,而且本身就等于那一行数据
{
//通过类似索引的方式
//Console.WriteLine(dr[0].ToString() + " " + dr[1].ToString());

//通过列名的方式
//Console.WriteLine(dr["fid"].ToString() + " " + dr["fname"].ToString());

//通过GetString()的方法,必须确保该列内没有null
Console.WriteLine(dr.GetString(1) + " " + dr.GetDecimal(4));

//GetOrdinal()方法,通过给定列名,获得在结果集中的索引,返回值为int类型,常与上面GetString()方法联用
//Console.WriteLine(dr.GetString(dr.GetOrdinal("fnumber")));

//GetValue()方法,给定结果集中的索引,获得结果集中对应的值,返回值为Object类型
//Console.WriteLine(dr.GetValue(dr.GetOrdinal("fname")).ToString());
}
}
else
{
Console.WriteLine("无数据!!!");
}
//释放SqlDataReader占用的资源
dr.Dispose();
cmd.Dispose();
conn.Close();
conn.Dispose();
}

//方法2 -- DataAdapter,一次性取回结果集
public static void QueryByDataAdapter()
{
string conStr = @"Persist Security Info=False;Trusted_Connection=True;database=temp;server=(local)";
SqlConnection conn = new SqlConnection(conStr);
//不需要conn.Open();
string sqlStr = "select * from T_Employee";
//创建DataAdapter对象
SqlDataAdapter da = new SqlDataAdapter(sqlStr, conn);
//创建DataSet(数据集)对象(程序端的临时数据库)
DataSet ds = new DataSet();
//调用Fill()方法,填充数据集(先去数据库结果集,并把结果集复制给数据集)
//给取到的表取别名“table1”
da.Fill(ds,"table1");
//获取数据集中的第一张表(通过索引)
DataTable dt = ds.Tables[0]; //或ds.Tables["table1"]
//循环数据表中的第一行
for (int i = 0; i < dt.Rows.Count; i++)
{
//将循环到的行给对象dr
DataRow dr = dt.Rows[i];
Console.WriteLine(dr[0].ToString());
}
ds.Dispose();
da.Dispose();
}

///
/// 使用DataAdapter填充数据表
///

public static void QueryByDataAdapter2()
{
string conStr = @"Persist Security Info=False;Trusted_Connection=True;database=temp;server=(local)";
SqlConnection conn = new SqlConnection(conStr);
//不需要conn.Open();
string sqlStr = "select * from T_Employee";
//创建DataAdapter对象
SqlDataAdapter da = new SqlDataAdapter(sqlStr, conn);
//调用Fill()方法,填充数据表(先去数据库结果集,并把结果集复制给数据表)
DataTable dt = new DataTable();
da.Fill(dt);
//循环数据表中的第一行
for (int i = 0; i < dt.Rows.Count; i++)
{
//将循环到的行给对象dr
DataRow dr = dt.Rows[i];
Console.WriteLine(dr[0].ToString());
}
dt.Dispose();
da.Dispose();
}
}