ADO.NET:C#/SQL Server
1.首次要准备的(工具)是:a.Microsoft Visual Studio Ultimate 2012;b.Microsoft SQL Server Management Studio ;
2.首先创建一个(SQL Server)数据表,并且填充相应的数据:
USE SQL GO --创建数据表中的字段 CREATE TABLE SQL_T( ) NOT NULL, ) NOT NULL, [学号] INT NOT NULL, ,) NOT NULL, ,) NOT NULL, --标识列 CONSTRAINT PK_SQL_T_1 PRIMARY KEY CLUSTERED([ID]DESC) --添加主键约束,降序排列 --对索引进行一定的设置 WITH( PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON )ON[PRIMARY] )ON[PRIMARY] GO --下面写入数据: SET TRANSACTION ISOLATION LEVEL REPEATABLE READ --设置级别 BEGIN TRANSACTION INSERT_SQL_T_1 INSERT INTO SQL_T ([姓名] ,[班级] ,[学号] ,[分数] ) --选择插入数据的字段 ,99.56) --写入数据 COMMIT TRANSACTION INSERT_SQL_T_1 --提交 GO SET TRANSACTION ISOLATION LEVEL REPEATABLE READ --设置级别 BEGIN TRANSACTION INSERT_SQL_T_2 INSERT INTO SQL_T ([姓名] ,[班级] ,[学号] ,[分数] ) --选择插入数据的字段 ,98.23) --写入数据 COMMIT TRANSACTION INSERT_SQL_T_2 --提交 go SET TRANSACTION ISOLATION LEVEL REPEATABLE READ --设置级别 BEGIN TRANSACTION INSERT_SQL_T_3 INSERT INTO SQL_T ([姓名] ,[班级] ,[学号] ,[分数] ) --选择插入数据的字段 ,87.6) --写入数据 COMMIT TRANSACTION INSERT_SQL_T_3 --提交 go SET TRANSACTION ISOLATION LEVEL REPEATABLE READ --设置级别 BEGIN TRANSACTION INSERT_SQL_T_4 INSERT INTO SQL_T ([姓名] ,[班级] ,[学号] ,[分数] ) --选择插入数据的字段 ,65.51) --写入数据 COMMIT TRANSACTION INSERT_SQL_T_4 --提交 go SET TRANSACTION ISOLATION LEVEL REPEATABLE READ --设置级别 BEGIN TRANSACTION INSERT_SQL_T_1 INSERT INTO SQL_T ([姓名] ,[班级] ,[学号] ,[分数] ) --选择插入数据的字段 ,256.56) --写入数据 COMMIT TRANSACTION INSERT_SQL_T_1 --提交 go --下面显示写入的数据表 SELECT* FROM[SQL_T] GO

3.1.在VS2012中加载上面创建的数据表;
菜单中选择【项目】-选择【添加数据源】-【数据库】-【数据集】-点击新建连接-刷新服务器名后选择-然后选择对应数据表的数据库-最后点击测试连接,如下图:

然后点击下一步,下一步,完成.(以上我们是用windows身份进行连接的,此外还可以使用sql server 身份进行连接。)
然后进入SQL Server对象资源管理器中查看刚刚加载的数据库:

接下来接可以在WindowsForms上进行操作了。
4.1.创建数据库的连接:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient; //包含数据库连接对象的命名空间
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{ MessageBox.Show("请输入要连接的数据库名!"); }
else
{
try
{ //连接对象其中的字符串中包含了服务器名:可以是本机的ip地址,要连接的数据库,连接的身份,,注意“Data Source=PQC-PC\\SQLEXPRESS;”是2个“\\”
SqlConnection sqlconn = new SqlConnection("Data Source=PQC-PC\\SQLEXPRESS;Initial Catalog=" + textBox1.Text.Trim() + ";Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False");
sqlconn.Open(); //打开连接
//判断连接的状态:
if (sqlconn.State == ConnectionState.Open)
{ MessageBox.Show("恭喜已经成功连接到数据库了!"); }
sqlconn.Close();
}
catch
{ { MessageBox.Show("连接失败!"); } }
}
}
}
}

4.2.1.colse()方法关闭数据库连接同上;
4.2.2. 比较colse()方法和 Dispose ()都是关闭数据库连接的方法,区别就是: Dispose 不仅关闭一个连接而且还要清理连接所暂用的资源,当用close关闭连接后可以用open方法再次打开,而 Dispose 却不能,非要再次对其连接进行初始化;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient; //*****
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
SqlConnection sqlconn;
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
errorProvider1.SetError(textBox1, "这里不能为空!"); //验证提示输入
}
else
{
try
{
string sql_conn = "Data Source=PQC-PC\\SQLEXPRESS;Initial Catalog=" + textBox1.Text.Trim() + ";Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False";
sqlconn = new SqlConnection(sql_conn); //建立连接
sqlconn.Open(); // 打开连接
if (sqlconn.State == ConnectionState.Open) //判断连接的状态
{
listBox1.Items.Add("数据库连接成功\n");
this.toolStripStatusLabel1.Text = "数据库连接成功";
}
}
catch (Exception ex) //显示错误信息提示
{
listBox1.Items.Add(ex.Message );
this.toolStripStatusLabel1.Text = "数据库连接失败!";
}
}
}
private void Form2_Load(object sender, EventArgs e)
{
AcceptButton = button1;
listBox1.HorizontalScrollbar = true; listBox1.ScrollAlwaysVisible = true;
listBox1.SelectionMode = SelectionMode.MultiExtended;
}
private void button2_Click(object sender, EventArgs e)
{
sqlconn.Close(); //Close方法关闭
try
{
sqlconn.Open();
if (sqlconn.State == ConnectionState.Open)
{
listBox1.Items.Add("恭喜再次连接成功!\n"); this.toolStripStatusLabel1.Text = "ok";
}
}
catch (Exception ex)
{ listBox1.Items.Add(ex.Message +"\n"); }
}
private void button3_Click(object sender, EventArgs e)
{
sqlconn.Dispose();
try
{
sqlconn.Open();
if (sqlconn.State == ConnectionState.Open)
{
listBox1.Items.Add("恭喜再次连接成功!\n"); this.toolStripStatusLabel1.Text = "ok";
}
}
catch (Exception ex)
{ listBox1.Items.Add(ex.Message + "\n"); toolStripStatusLabel1.Text = "有问题!"; }
}
}
}

5.1.使用command对象编辑(增/删/改)数据表:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace WindowsFormsApplication1
{
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
SqlConnection sqlconn; //连接对象
SqlCommand sqlcomm; //sql修改对象
SqlDataAdapter sda; //适配器
string str_conn = "Data Source=PQC-PC\\SQLEXPRESS;Initial Catalog=SQL;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False";
private void Form3_Load(object sender, EventArgs e)
{
sqlconn = new SqlConnection(str_conn );
sqlcomm = new SqlCommand("select* from[SQL_T]",sqlconn ); //查询操作
sda = new SqlDataAdapter(sqlcomm ); //实例化适配
DataSet ds1 = new DataSet();
sda.Fill(ds1,"cs1" ); //填充ds1数据池
dataGridView1.DataSource=ds1.Tables["cs1"]; //将数据池里的【cs1】表显示在datagridview控件上
}
//
private void xianshi_datagridview2() //创建一个显示修改后的方法
{
//下面将修改后的数据显示在另一个控件上:
sqlconn = new SqlConnection(str_conn );
sqlcomm = new SqlCommand("select* from[SQL_T]", sqlconn);
sda = new SqlDataAdapter(sqlcomm );
DataSet ds2 = new DataSet();
sda.Fill(ds2, "cs2");
dataGridView2.DataSource = ds2.Tables["cs2"];
}
private void zengjia_button_Click(object sender, EventArgs e)
{
if (xingming.Text == "" && banji.Text == "" && xuehao.Text == "" && fenshu.Text == "") //判断添加的信息是否齐全
{ MessageBox.Show("只有齐全的数据才能添加哦!", "", MessageBoxButtons.OK, MessageBoxIcon.Error); }
else
{
sqlconn.Open(); //打开连接
sqlcomm.CommandText = "INSERT INTO SQL_T ([姓名] ,[班级] ,[学号] ,[分数] ) VALUES("
+ "'" + xingming.Text.Trim() + "'" + "," + "'" + banji.Text.Trim() + "'" + "," + xuehao.Text.Trim() + "," + fenshu.Text.Trim() + ")";
//说明CommandType的属性为SQL文本命令
sqlcomm.CommandType = CommandType.Text;
//使用ExecuteNonQuery()前要打开连接
int i = Convert.ToInt32(sqlcomm.ExecuteNonQuery());
this.toolStripStatusLabel1.Text = "已经成功添加了"+i.ToString()+"行数据。";
sqlconn.Close(); //关闭数据连接
xianshi_datagridview2(); //调用显示修改后的方法
}
}
private void zengjia_button_MouseCaptureChanged(object sender, EventArgs e)
{
}
private void xiugai_button_Click(object sender, EventArgs e)
{
sqlconn.Open(); //打开连接
sqlcomm.CommandText = "update SQL_T set [姓名]=" + "'" + xingming.Text.Trim() + "'" + "," + "[班级]=" + "'" + banji.Text.Trim() + "'" + "," + "[学号]=" + xuehao.Text.Trim()+","+"[分数]="+fenshu.Text.Trim()+" where [ID]="+id.Text.Trim() ;
sqlcomm.CommandType=CommandType.Text;
int i = Convert.ToInt32(sqlcomm.ExecuteNonQuery());
this.toolStripStatusLabel1.Text = "修改了" + i.ToString() + "记录";
sqlconn.Close(); //关闭数据连接
xianshi_datagridview2(); //调用显示修改后的方法
}
private void shanchu_button_Click(object sender, EventArgs e)
{
sqlconn.Open();//打开连接
sqlcomm.CommandText = "DELETE FROM SQL_T WHERE [ID]=" + id.Text.Trim();
sqlcomm.CommandType = CommandType.Text;
int i = Convert.ToInt32(sqlcomm.ExecuteNonQuery());
this.toolStripStatusLabel1.Text = "已经成功删除了"+i.ToString()+"句话!";
sqlconn.Close();
xianshi_datagridview2();
}
}
}
检验1:

2.增加一条数据(姓名=你好,学号=110,班级=没有,分数=3):

3.将刚刚增加的数据修改成(姓名=好的,学号=520,班级=不告诉你,分数=100):

4.删除这条数据:

5.2.在(视图)datagridview控件上修改一条记录:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace WindowsFormsApplication1
{
public partial class Form4 : Form
{
public Form4()
{
InitializeComponent();
}
SqlConnection sqlconn = new SqlConnection("Data Source=PQC-PC\\SQLEXPRESS;Initial Catalog=SQL;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False");
private void Form4_Load(object sender, EventArgs e)
{
SqlCommand sqlcomm = new SqlCommand("select* from[SQL_T]",sqlconn );
SqlDataAdapter sda = new SqlDataAdapter(sqlcomm );
DataSet ds = new DataSet();
sda.Fill(ds,"cs" );
dataGridView1.DataSource=ds.Tables["cs"];
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
try
{
//将控件中对应的信息赋值给对用的textbox
id.Text = dataGridView1.SelectedCells[].Value.ToString();
xingming.Text = dataGridView1.SelectedCells[].Value.ToString();
banji.Text = dataGridView1.SelectedCells[].Value.ToString();
xuehao.Text = dataGridView1.SelectedCells[].Value.ToString();
fenshu.Text = dataGridView1.SelectedCells[].Value.ToString();
}
catch (Exception ex)
{ this.toolStripStatusLabel1.Text = ex.Message; }
}
private void 确定修改_Click(object sender, EventArgs e)
{
SqlCommand sqlcomm = new SqlCommand("select* from[SQL_T]", sqlconn);
SqlDataAdapter sda = new SqlDataAdapter(sqlcomm);
DataSet ds1 = new DataSet();
sda.Fill(ds1,"cs1");
DataTable dt1 = new DataTable();
dt1=ds1.Tables["cs1"];
sda.FillSchema(dt1,SchemaType.Mapped );
DataRow dr = dt1.Rows.Find (id.Text ); //读取主键行
//将textbox中对应的信息赋值给datatable中的对应行信息
dr["姓名"] = xingming.Text.Trim();
dr["班级"] = banji.Text.Trim();
dr["学号"] = xuehao.Text.Trim();
dr["分数"] = fenshu.Text.Trim();
SqlCommandBuilder sqlcb = new SqlCommandBuilder(sda );
sda.Update(dt1 );
dataGridView1.DataSource=ds1.Tables["cs1"];
toolStripStatusLabel1.Text = "修改成功!";
}
}
}
检验:1.

2.

3.

5.3.在(视图)datagridview控件上修改单元格:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace WindowsFormsApplication1
{
public partial class Form5 : Form
{
public Form5()
{
InitializeComponent();
}
SqlConnection sqlconn = new SqlConnection("Data Source=PQC-PC\\SQLEXPRESS;Initial Catalog=SQL;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False");
private void Form5_Load(object sender, EventArgs e)
{
SqlDataAdapter sda = new SqlDataAdapter("select* from[SQL_T]",sqlconn );
DataSet ds = new DataSet();
sda.Fill(ds,"cs");
dataGridView1.DataSource=ds.Tables["cs"];
}
private DataTable copy_t() //复制一个数据表方法
{
SqlDataAdapter sda = new SqlDataAdapter("select* from[SQL_T]", sqlconn);
DataTable dt = new DataTable();
int i = sda.Fill(dt );
return dt;
}
private Boolean up_show() //更改的方法,其中更改方法中自动调用 copy_t() //复制一个数据表方法
{
SqlDataAdapter sda = new SqlDataAdapter("select* from[SQL_T]", sqlconn);
DataTable up_dt = copy_t();
up_dt.Rows.Clear();
DataTable show_dt = (DataTable)this.dataGridView1.DataSource;
; i < dataGridView1.Rows.Count - ; i++)
{ up_dt.ImportRow(show_dt.Rows[i]); }
try
{
sqlconn.Open();
sda = new SqlDataAdapter("select* from[SQL_T]", sqlconn );
SqlCommandBuilder sqlcb = new SqlCommandBuilder(sda );
sda.Update(up_dt);
}
catch (Exception ex)
{ this.toolStripStatusLabel1.Text = ex.Message; sqlconn.Close(); return false; }
up_dt.AcceptChanges(); //提交更改的数据
sqlconn.Close();
this.toolStripStatusLabel1.Text = "ok";
return true;
}
private void button1_Click(object sender, EventArgs e)
{
if (up_show()) //调用更改方法
{ MessageBox.Show("恭喜,数据已经修改成功!"); }
else
{ MessageBox.Show("操作失败!"); }
}
}
}
检验:

1. 将姓名为:李异峰,班级=C#.NET;姓名为:李晓峰,学号=880,班级=asp.net;

--在Microsoft SQL Server Management Studio中查询:

ADO.NET:C#/SQL Server的更多相关文章
- ADO.NET访问SQL Server调用存储过程带回参
1,ADO.NET访问SQL Server调用存储过程带回参 2,DatabaseDesign use northwind go --存储过程1 --插入一条商品 productname=芹菜 un ...
- JDBC连接SQL server与ADO.NET连接Sql Server对比
JDBC连接SQL server与ADO.NET连接Sql Server对比 1.JDBC连接SQL server 1)java方面目前有很多驱动能够驱动连接SQL servernet. 主流的有 ...
- .NET Core开发日志——ADO.NET与SQL Server
在.NET世界,如果想要对数据库进行操作,总少不了ADO.NET的身影.在.NET Core里同样离不开那些熟悉的类库与API.这里简略地介绍下如何通过ADO.NET对SQL Server进行不同的处 ...
- ADO.NET中SQL Server数据库连接池
连接到数据库服务器通常由几个需要很长时间的步骤组成. 必须建立物理通道(例如套接字或命名管道),必须与服务器进行初次握手,必须分析连接字符串信息,必须由服务器对连接进行身份验证,必须运行检查以便在当前 ...
- 使用ADO.NET对SQL Server数据库进行訪问
在上一篇博客中我们给大家简介了一下VB.NET语言的一些情况,至于理论知识的学习我们能够利用VB的知识体系为基础.再将面向对象程序设计语言的知识进行融合便可进行编程实战. 假设我们须要訪问一个企业关系 ...
- [转载]C#中使用ADO.NET连接SQL Server数据库,自动增长字段用作主键,处理事务时的基本方法
问题描述: 假设在数据库中存在以下两张数据表: User表,存放用户的基本信息,基本结构如下所示: 类型 说明 ID_User int 自动增长字段,用作该表的主键 UserName varcha ...
- ADO.NET 基础 (SQL Server)
一.Web.config配置 <connectionStrings> <add name="constr_name" connectionString=" ...
- ADO.NET操作SQL Server:数据库操作类(已封装)
1.增.删.改通用方法 /// <summary> /// 增.删.改通用方法 /// </summary> /// <param name="commandT ...
- ADO.NET操作SQL Server:数据库操作类(未封装)
1.添加数据 /// <summary> /// 添加数据 /// </summary> /// <param name="newEntity"> ...
随机推荐
- ITerm常用的快捷键
新建标签:command + t 关闭标签:command + w 切换标签:command + 数字 或者 command + 左右方向键 切换全屏:command + enter 查找:comma ...
- 一个简单的获取RGB值方式
操作系统内置了许多小工具,有时候这些小工具也挺有用的,省去了安装一些复杂的软件, 截图 通过键盘PrtSc获取到要取色的图片,然后用画图工具打开 查看 通过画图工具的取色工具,取到你需要的颜色,然后点 ...
- PHP核心技术——反射
反射: 反射指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类.方法.属性.参数等的详细信息,包括注释.这种动态获取信息以及动态调用对象方法的功能称为反射API class person{ ...
- OpenFastPath(2):原生态Linux Socket应用如何移植到OpenFastPath上?
版本信息: ODP(Open Data Plane): 1.19.0.2 OFP(Open Fast Path): 3.0.0 1.存在的问题 OpenFastPath作为一个开源的用户态TCP/IP ...
- .NetCore mvc Ajax Post数据到后端
在前端页面中,如果没有表单,想把复杂对象提交到后端,可使用以下方法 后端Controller中定义以下方法: [HttpPost] public int AddSolution([FromBody]S ...
- kubeadm源码修改证书时间 -1.13
编译后~ 链接:https://pan.baidu.com/s/1ofLX1Sv0ZF2yjkJdqf-6rw 提取码:cnbd 已统一与CA证书都是10年 已测试 适用于k8s 1.10 至 1.1 ...
- MFC -- Excel操作简介(基于VS2010)
一.添加与 Excel 操作相关的头文件 项目 -> 类向导,在右上方有一个下拉栏,选择其中的 类型库中的MFC类(T),即可看到下图所示界面,选择“文件”选项,然后在下方的位置选项中添加本地文 ...
- python数据分析系列(2)--numpy
NumPy(Numerical Python的简称)是Python数值计算最重要的基础包.大多数提供科学计算的包都是用NumPy的数组作为构建基础. NumPy的部分功能如下: ndarray,一个具 ...
- C++判断回文
判断一个字符串是否为回文,如“goddog”. 代码: #include <iostream> #include <string> #include <stdio.h&g ...
- 20135234mqy-——信息安全系统设计基础第七周学习总结
第六章 存储器层次结构 存储器系统是一个具有不同容量,成本和访问时间的存储设备的层次结构. CPU寄存器保存着最常用的数据. 靠近CPU的小的,快速的高速缓存存储器作为一部分存储在相对较慢的主存储器( ...