C#|C#数据库教程2-ADO.NET常用SQL语句

目录
1、ExecuteNonQuery插入SQL数据
2、ExecuteScalar查询SQL语句
3、插入数据后,查询 ID,获得自增字段的值
4、ExecuteReader执行查询
总结:
(1)数据类型对应
(2)sqlserver数据库字段出现空格字符问题
测试程序下载连接:

1、ExecuteNonQuery插入SQL数据 (using用完以后自动释放,而使用close或者Dispose这些在出现异常得时候不会释放内存资源导致数据库越来越慢)

private void btnInsert_Click(object sender, EventArgs e) { try { //SqlConnection为建立和数据库连接得对象 using (SqlConnection conn = new SqlConnection("Data Source=127.0.0.1; Initial Catalog=MyTest; User=sa; Password=54085408")) { conn.Open(); //打开连接 //通过连接创建一个向数据数据库发送命令(Command)得对象SqlCommand using (SqlCommand cmd = conn.CreateCommand()) { //CommandText为要执行得sql语句 cmd.CommandText = "insert into tbl_student(Name,Age,Comment) output inserted.ID values('Li',20,'WoMan')"; //ExecuteNonQuery一般用来执行UpDate、Delete、Insert、语句 cmd.ExecuteNonQuery(); //执行 } } MessageBox.Show("执行完成"); } catch {} }

2、ExecuteScalar查询SQL语句
private void btnFind_Click(object sender, EventArgs e) { try { //SqlConnection为建立和数据库连接得对象 using (SqlConnection conn = new SqlConnection("Data Source=127.0.0.1; Initial Catalog=MyTest; User=sa; Password=54085408")) { conn.Open(); //打开连接 //通过连接创建一个向数据数据库发送命令(Command)得对象SqlCommand using (SqlCommand cmd = conn.CreateCommand()) { //CommandText为要执行得sql语句 cmd.CommandText = "select count(*) from tbl_student where Age<100"; //object obj = cmd.ExecuteScalar(); //ExecuteScalar一般用来执行有且只有一行一列返回值的SQL语句 int i = (int)cmd.ExecuteScalar(); MessageBox.Show("Age<100的数据共:" + i.ToString() + "行数据"); } } MessageBox.Show("执行完成"); } catch { } }

查询结果
C#|C#数据库教程2-ADO.NET常用SQL语句
文章图片


3、插入数据后,查询 ID,获得自增字段的值 之所以不用 select MAX(ID) from tbl_student,是因为在大型的项目中,可能会有很多数据实时的插入进来,从而导致获取的数据并不是最大的。
private void btnSelectCount_Click(object sender, EventArgs e) { try { //SqlConnection为建立和数据库连接得对象 using (SqlConnection conn = new SqlConnection("Data Source=127.0.0.1; Initial Catalog=MyTest; User=sa; Password=54085408")) { conn.Open(); //打开连接 //通过连接创建一个向数据数据库发送命令(Command)得对象SqlCommand using (SqlCommand cmd = conn.CreateCommand()) { //CommandText为要执行得sql语句 cmd.CommandText = "insert into tbl_student(Name,Age) output inserted.ID values('Li',123)"; //object obj = cmd.ExecuteScalar(); //ExecuteScalar一般用来执行有且只有一行一列返回值的SQL语句 long i = (long)cmd.ExecuteScalar(); MessageBox.Show("当前插入数据共:" + i.ToString() + "行"); } } MessageBox.Show("执行完成"); } catch { } }

提示:insert into tbl_student(Name,Age) output inserted.ID values('Li',123) 的数据库语句,可用来查询数据库表中数据总数。
4、ExecuteReader执行查询 (1)ExecuteReader()用来执行一条查询结果为表值结果集的select语句 ,它返回一个SqlDataReader类型的对象。
(2)SqlDataReader不直接存储数据,它只是一个指挥棒,它的作用与foreach那个指针非常类似。
(3)SqlDataReader只能从前往后读,不能往回退。由于数据并不是真正读到了.NET程序的内存空间里,所有,通过SqlDataReader读取数据时必须保证SqlDataReader对象一直处于连接状态。
(4)另外,SqlDataReader只能读取数据,不能修改数据
private void btnSqlDataRead_Click(object sender, EventArgs e) { try { //SqlConnection为建立和数据库连接得对象 using (SqlConnection conn = new SqlConnection("Data Source=127.0.0.1; Initial Catalog=MyTest; User=sa; Password=54085408")) { conn.Open(); //打开连接 //通过连接创建一个向数据数据库发送命令(Command)得对象SqlCommand using (SqlCommand cmd = conn.CreateCommand()) { //CommandText为要执行得sql语句 cmd.CommandText = "select * from tbl_student where Age<100"; using(SqlDataReader rd=cmd.ExecuteReader()) { while(rd.Read()) { string name = rd.GetString(1); //1表示数据表的第一列 int age = rd.GetInt32(2); //2表示数据表的第二列 string comment = rd.GetString(3); //3表示数据表的第三列 MessageBox.Show(name + "," + age.ToString() + "," + comment); } } } } } catch { }}

运行结果
C#|C#数据库教程2-ADO.NET常用SQL语句
文章图片


总结: (1)ExecuteNonQuery一般用来执行UpDate、Delete、Insert、语句
(2)ExecuteScalar一般用来执行有且只有一行一列返回值的SQL语句
(1)数据类型对应
SQLC#
intint
bigintlong(长int)
nvarcharstring
【C#|C#数据库教程2-ADO.NET常用SQL语句】bit(0,1)bool
(2)sqlserver数据库字段出现空格字符问题
SQL 中定义:
char: 固定长度,存储ANSI字符,不足的补英文半角空格。
nchar: 固定长度,存储Unicode字符,不足的补英文半角空格
varchar: 可变长度,存储ANSI字符,根据数据长度自动变化。
nvarchar: 可变长度,存储Unicode字符,根据数据长度自动变化。
解决方案:
业务中字符主键类建议优先使用varchar,nvarchar。
如使用char,查询语句中最好trim下,防止业务中出现不必要的错误。

测试程序下载连接: https://download.csdn.net/download/panjinliang066333/85143537

创作不易,请多多支持
C#|C#数据库教程2-ADO.NET常用SQL语句
文章图片




    推荐阅读