ADO.net访问数据库的方式
解析1
- 连接数据库用 Connection
- 执行SQL语句 Command
- 执行完毕后将结果一条一条的返回 DataReader
解析2
使用DataAdapte+DataSet,这种方法本质还是通过 Connection、Command、DataReader
将数据全部取出来,放到 DataSet 中
连接SQL Server
- 连接字符串:程序通过连接字符串 指定要连接哪台服务器上的、哪个实例的哪个数据库、用什么用户名和密码。
- ADO.net中通过SqlConnection类创建到SQL Server的连接,SqlConnection代表一个数据库的连接,ADO.net中的连接等资源都实现了 IDisposable接口,可以使用using进行资源管理。执行备注中的代码如果成功了 就 OK
- Connection 的 StateChange 事件
- 操作SQL Server 数据库使用 SqlCommand对象,SqlCommand 表示向服务器提交的一个命令(SQL语句等),CommandText 属性为要执行的SQL语句。
- 创建SqlCommand对象
- 通过 new 关键字创建
- 通过 IDbConnection.CreateCommand()方法创建(编写通用代码的时候用(多态))
- 常用的三个方法
01 ExecuteNonQuery() 执行对数据的增删改,返回影响行数,适合:insert、delete、update(对于其它语句返回 -1)
02 ExecuteScalar() 执行查询,返回首行首列
03 ExecuteReader() 执行查询,返回DataReader 对象
(*)StatementCompleted 事件
每条SQL语句执行完毕后触发
多条语句同时执行(用分号隔开),如何获取每条语句所影响的行数?//实际返回值为每条语句影响的行数的和。
代码分享
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace _03连接数据库实现增删改和简单查询
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//向TblPerson表插入一条记录
//1.连接数据库
//连接字符串
string constr = "Data Source=steve-pc;Initial Catalog=itcast2013;Integrated Security=True";
//创建连接对象
using (SqlConnection con = new SqlConnection(constr))
{
//打开数据连接
//如果con对象是其他地方传递过来的一个对象,则在打开之前最好做判断con.State
con.Open();
//向表中插入一条数据
//先构建一个sql语句
string sql = string.Format("insert into TblPerson(uname, uage, uheight) values('{0}',{1},{2})", "黄林", 18, 175);
//执行sql语句需要一个"命令对象"
//创建一个命令对象
using (SqlCommand cmd = new SqlCommand(sql, con))
{
//这里要执行insert语句所以用ExecuteNonQuery()方法。
//通过调用该方法就会将insert语句交给数据库引擎来执行
//这个方法的返回值是一个int类型,表示当前Sql语句执行后所影响的行数。
int r = cmd.ExecuteNonQuery();
Console.WriteLine("成功插入了{0}", r);
#region SqlCommand对象常用的3个方法。
//执行sql语句
//cmd.ExecuteNonQuery() //当执行insert,delete,update语句时,一般使用该方法
//当执行返回单个值的sql语句时使用该方法。
//cmd.ExecuteScalar()
//当执行Sql语句返回多行多列时,一般使用该方法。
//cmd.ExecuteReader()
#endregion
}
}
}
private void button2_Click(object sender, EventArgs e)
{
//把Id是41的删除
string constr = "Data Source=steve-pc;Initial Catalog=itcast2013;Integrated Security=True";
using (SqlConnection con = new SqlConnection(constr))
{
string sql = string.Format("delete from TblPerson where autoId={0}", 41);
using (SqlCommand cmd = new SqlCommand(sql, con))
{
//尽可能晚的打开连接
con.Open();
int r = cmd.ExecuteNonQuery();
//使用完毕后尽可能早的关闭连接
con.Close();
Console.WriteLine("删除了{0}行。", r);
}
}
MessageBox.Show("ok");
}
private void button3_Click(object sender, EventArgs e)
{
//更新操作
string constr = "Data Source=steve-pc;Initial Catalog=itcast2013;Integrated Security=True";
using (SqlConnection con = new SqlConnection(constr))
{
string sql = string.Format("update TblPerson set uname='{0}' where autoId={1}", "许正龙", 40);
using (SqlCommand cmd = new SqlCommand(sql, con))
{
con.Open();
int r = cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("更新了" + r + "行。");
}
}
}
}
}