ADO.NET知识的运用一(Day 26)
哈哈,又到了总结的时间了,来回顾一下今天主要学了关于ADO.NET的哪些知识吧。(这次学的ADO访问数据库主要以访问SQL数据库为主)
理论:
首先我们要知道为什么要学习ADO.NET?
因为我们之前所学只能在查询分析器里查看数据,操作数据,我们不能让普通用户去学sql,所以我们搭建一个界面(web或winform)让用户方便的操作数据库中的数据
什么是ADO.NET?
ADO.NET就是一组类库,这组类库可以让我们通过程序的方式访问数据库,就像System.IO下的类操作文件一样, System.Data.这组类是用来操作数据库(不光是MSSql Server),它提供了统一的编程接口让操作其它数据库(Access、Oracle等)的方式和操作MSSql Server一致
ADO.NET访问数据库的方式(有两种)
static void Main(string[] args)
{
//创建连接字符串
string connstr = "Data Source=.;Initial Catalog=db_buiness;Integrated Security=True";
//打开连接
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open();
//执行数据库操作
string sql = "insert into info values(‘jany‘,19,‘女‘,‘123456‘)";
using (SqlCommand comm = new SqlCommand(sql, conn)) //创建命令对象
{
int i = comm.ExecuteNonQuery(); //执行对数据库的增删改,返回受影响的行数
if (i > 0)
{
Console.WriteLine("插入成功");
}
else
{
Console.WriteLine("插入失败");
}
}
Console.ReadKey();
}
}
结果:
2. 更新数据(删除数据类似于更新数据和插入数据,只是执行的sql语句不一样而已)
static void Main(string[] args)
{
//创建连接字符串
string connstr = "Data Source=.;Initial Catalog=db_buiness;Integrated Security=True";
//打开连接
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open();
//执行数据库操作
string sql = "update info set name=‘rose‘ where id=4";
using (SqlCommand comm = new SqlCommand(sql, conn)) //创建命令对象
{
int i = comm.ExecuteNonQuery(); //执行对数据库的增删改,返回受影响的行数
if (i > 0)
{
Console.WriteLine("更新成功");
}
else
{
Console.WriteLine("更新失败");
}
}
Console.ReadKey();
}
}
结果:
3.读取数据(运用SqlDataReader)
static void Main(string[] args)
{
//创建连接字符串
string connstr = "Data Source=.;Initial Catalog=db_buiness;Integrated Security=True";
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open(); //打开连接
string sqltext = "select * from 职工";
using (SqlCommand comm = new SqlCommand(sqltext, conn))
{
using (SqlDataReader sda = comm.ExecuteReader()) //创建数据读取器,获取SqlDataReader的对象
{
while (sda.Read()) //一条一条来读取
{
Console.WriteLine("职工ID{0},职工号{1},仓库号{2},姓名{3},性别{4},工资{5}", sda[0], sda[1], sda[2], sda[3], sda[4], sda[5]);
}
Console.ReadKey();
}
}
}
结果:
3.DataSet运用(窗体程序)
首先设计窗体界面
主要代码:
private void Form1_Load(object sender, EventArgs e)
{
//创建连接字符串
string connstr = "Data Source=.;Initial Catalog=db_buiness;Integrated Security=True";
//打开连接
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open();
//执行数据库操作
string sqltext = "Select * from 职工";
using (SqlCommand comm = new SqlCommand(sqltext, conn)) //创建命令对象
{
DataSet sds = new DataSet(); //创建数据集
using (SqlDataAdapter sda= new SqlDataAdapter(comm) ) //创建数据适配器
{
sda.Fill(sds); //填充数据
}
this.dataGridView1.DataSource =sds.Tables[0]; //绑定数据
}
}
}
结果:
4.用户登录(窗体程序)
窗体界面
主要代码:
private void btnok_Click(object sender, EventArgs e)
{
string user = this.txtname.Text;
string pwd = this.txtpwd.Text;
//创建连接字符串
string connstr = "Data Source=.;Initial Catalog=db_buiness;Integrated Security=True";
//打开连接
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open();
//执行数据库操作。 (向SqlCommand的Parameters中添加参数)
string sqltext = "select * from info where name=@user and pwd=@pwd";
SqlParameter sp = new SqlParameter("@user", user);
SqlParameter sp1 = new SqlParameter("@pwd", pwd);
using (SqlCommand cmd = new SqlCommand(sqltext, conn))
{
cmd.Parameters.Add(sp);
cmd.Parameters.Add(sp1);
DataTable dt = new DataTable(); //表示一个内存中数据表
using (SqlDataAdapter sda = new SqlDataAdapter(cmd)) //创建数据适配器
{
sda.Fill(dt); //填充数据
}
if (dt.Rows.Count > 0)
{
MessageBox.Show("登陆成功");
}
else
{
MessageBox.Show("登录失败");
}
}
}
}
private void btnclo_Click(object sender, EventArgs e)
{
this.txtname.Text= "";
this.txtpwd.Text = "";
}
运行结果:
补充:
SQL注入漏洞攻击
参数在SQLServer内部不是简单的字符串替换,SQLServer直接用添加的值进行数据比较,因此不会有注入漏洞攻击。(带参数的sql语句内部是调用了存储过程)
呵呵,今天就先写到这里吧。其他的一些知识等用到的时候在记录下来吧。加油!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。