您现在的位置是:首页 > 编程语言学习 > 其他编程语言 > 文章正文 其他编程语言

如何利用C#通过sql语句操作Sqlserver数据库教程

2022-10-28 09:56:07 其他编程语言

简介你得有一个sqlserver数据库,并且要和vs项目连接。关于VS连接sqlserver数据库的教程前几天发过了,链接如下VS2022连接sqlserver数据库教程...

你得有一个sqlserver数据库,并且要和vs项目连接。

关于VS连接sqlserver数据库的教程前几天发过了,链接如下

VS2022连接sqlserver数据库教程

调用用于访问和控制数据库的程序集。还得确保你真的安装了这个程序集

  1. using System.Data.SqlClient; 

安装好如下才对

填写连接参数字符串

无账号密码的数据库服务器(windows用户认证)这样写即可

  1. string connStr = "Data Source=LAPTOP-82MUPKTO;Initial Catalog=CSDN予我心安A3的数据库;Integrated Security=True"
  2.   
  3. //LAPTOP-82MUPKTO  连接的数据库服务器名 
  4. //CSDN予我心安A3的数据库   连接的数据库名 

有账号密码登录的数据库服务器(sqlserver身份认证)这样写


  1. string connStr = "Data Source=服务器名;Initial Catalog=数据库名;User ID = 账号;Password=密码"

将连接参数字符串传入数据库链接类,生成链接对象conn

  1. SqlConnection conn = new SqlConnection(connStr); 
  2. //SqlConnection 变量名 = new SqlConnection(参数字符串或存储了参数字符串的变量); 

进行链接的测试,运行不报错即链接成功

  1. conn.Open();//打开数据库链接,越晚开越好 
  2. conn.Close();//关闭数据库链接,用完就关,别挂着 

必要准备已经OK了

下面来讲sql语句的编写和执行。

SQL语句编写加执行

编写

我们定义一个string类型的sql变量来存储我们的sql语句,sql语句只需用原本的语法即可,无需做变化。

sqlserver中创建数据表一般是这么写的

这里把他转成一行的,不用管缩进 。


  1. string sql = "create table csdn予我心安的数据表1(name varchar(8) not null)"

有人会问,我的sql语句内容要持续变化,但格式基本不变咋办。总不能另写一条吧。其实没那么折腾,用C#的String.Format()生成sql语句字符串就好了.

比如说我要创建的数据表名要替换,我们在表名这加个占位符就OK

  1. string tablename="csdn予我心安的数据表1";//我是表名 
  2. string sql = String.Format("create table {0}(name varchar(8) not null)", tablename); 
  3. //tablename的内容会替换掉字符串中的{0},所以sql的内容会随着tablename变换而改变 

执行

创建执行器

sql语句我们已经写好了,接下了就要执行了

我们调用SqlCommand类生成一个sql语句执行器cmd,传入sql语句和链接变量

  1. SqlCommand cmd = new SqlCommand(sql, conn); 
  2. //格式:SqlCommand 自定义执行器变量名= new SqlCommand(sql字符串变量, 链接变量); 

执行器我们创建好了,接下来要选择执行方法,不同的执行方法有不同的返回值。

特别提醒:使用前记得打开链接

  1. conn.Open(); 

ExecuteNonQuery()方式执行

  1. cmd.ExecuteNonQuery(); 

ExecuteScalar()方式执行

  1. cmd.ExecuteScalar(); 

二者区别

ExecuteReader()方式执行

  1. cmd.ExecuteReader(); 

这个执行方式的作用我会在下面的实例中详细讲解

特别提醒:执行完请关闭连接

  1. conn.Close(); 

实例:

1-创建一张数据表

为小明创建一张个人成绩表

要用到sql语句中创建数据表的指令

  1. create table 表名 
  2. 列名 数据类型 是否允许为空(null||not null), 
  3. 列名2 数据类型 是否允许为空(null||not null), 
  4. 列名3 数据类型 是否允许为空(null||not null), 
  5. …… 
  6. 列名n 数据类型  是否允许为空(null||not null

C#代码

  1. using System.Data.SqlClient;//头别忘了,如果加了头还显示未调用,请检查Nuget包 
  2.   
  3. public static void addtable(string tablename) 
  4. //测试连接数据库 
  5. string connStr = "Data Source=LAPTOP-82MUPKTO;Initial Catalog=CSDN予我心安A3的数据库;Integrated Security=True"
  6. SqlConnection conn = new SqlConnection(connStr); 
  7. //打开数据库 
  8. conn.Open(); 
  9.   
  10. //编写sql语句,语法即sql语法 
  11. string sql = String.Format("create table {0}(课程名 varchar(11) not null,成绩  tinyint not null)", tablename); 
  12. SqlCommand cmd = new SqlCommand(sql, conn); 
  13. //贴心,异常处理都安排上了 
  14. try 
  15. cmd.ExecuteNonQuery(); 
  16. Console.WriteLine("数据表创建成功"); 
  17. catch (SqlException ae) 
  18. Console.WriteLine("数据表创建失败"); 
  19. Console.WriteLine(ae.Message); 
  20. finally 
  21. conn.Close();//对数据库操作完成后,需要关闭数据库,释放内存 
  22.   
  23. addtable("考试成绩表"

芜湖起飞

2-向表中插入数据

小明的计算机科学考试考了100分,帮他录进去

要用到sql中的插入数据指令

  1. insert into 表名 
  2. values 
  3. ('数据1','数据2','数据3')//第一行数据,表结构有几列就几个呗,允许为空的地方可以就打'' 
  4. ('数据1','数据2','数据3')//第二行数据,表结构有几列就几个呗,允许为空的地方可以就打'' 
  5. public static void adddata(string classname,int grade) 
  6. //测试连接数据库 
  7. string connStr = "Data Source=LAPTOP-82MUPKTO;Initial Catalog=CSDN予我心安A3的数据库;Integrated Security=True"
  8. SqlConnection conn = new SqlConnection(connStr); 
  9. //打开数据库 
  10. conn.Open(); 
  11.   
  12. //编写sql语句,语法即sql语法 
  13. string sql = String.Format("insert into 考试成绩表 values('{0}','{1}')",classname,grade); 
  14. SqlCommand cmd = new SqlCommand(sql, conn); 
  15. try 
  16. cmd.ExecuteNonQuery(); 
  17. Console.WriteLine("成绩录入成功"); 
  18. catch (SqlException ae) 
  19. Console.WriteLine("成绩录入失败"); 
  20. Console.WriteLine(ae.Message); 
  21. finally 
  22. conn.Close();//对数据库操作完成后,需要关闭数据库,释放内存 
  23. data_Control.adddata("计算机科学",100); 

3-修改表中数据

我去,小明考试作弊被发现,成绩0分,帮他改过来

  1. update 表名 
  2. set 列名1='值',列名2='值' where 筛选条件 
  3. public static void changedata(string classname,int new_grade) 
  4. //测试连接数据库 
  5. string connStr = "Data Source=LAPTOP-82MUPKTO;Initial Catalog=CSDN予我心安A3的数据库;Integrated Security=True"
  6. SqlConnection conn = new SqlConnection(connStr); 
  7. //打开数据库 
  8. conn.Open(); 
  9.   
  10. //编写sql语句,语法即sql语法 
  11. string sql = String.Format("update 考试成绩表 set 成绩='{0}' where 课程名='{1}'", new_grade,classname); 
  12. SqlCommand cmd = new SqlCommand(sql, conn); 
  13. try 
  14. cmd.ExecuteNonQuery(); 
  15. Console.WriteLine("成绩修改成功"); 
  16. catch (SqlException ae) 
  17. Console.WriteLine("成绩修改失败"); 
  18. Console.WriteLine(ae.Message); 
  19. finally 
  20. conn.Close();//对数据库操作完成后,需要关闭数据库,释放内存 
  21.   
  22. changedata("计算机科学",0); 

4-删除表中数据

小明害怕被老爸竹笋炒肉丝,给我1包辣条贿赂我删掉这条记录,我肯定不会为了一包辣条就帮他

,但他拿了2包就是另一回事了。

  1. delete from 表名 where 筛选条件 
  2. public static void delete_data(string classname) 
  3. //测试连接数据库 
  4. string connStr = "Data Source=LAPTOP-82MUPKTO;Initial Catalog=CSDN予我心安A3的数据库;Integrated Security=True"
  5. SqlConnection conn = new SqlConnection(connStr); 
  6. //打开数据库 
  7. conn.Open(); 
  8.   
  9. //编写sql语句,语法即sql语法 
  10. string sql = String.Format("delete from 考试成绩表 where 课程名='{0}'", classname); 
  11. SqlCommand cmd = new SqlCommand(sql, conn); 
  12. try 
  13. cmd.ExecuteNonQuery(); 
  14. Console.WriteLine("成绩删除成功"); 
  15. catch (SqlException ae) 
  16. Console.WriteLine("成绩删除失败"); 
  17. Console.WriteLine(ae.Message); 
  18. finally 
  19. conn.Close();//对数据库操作完成后,需要关闭数据库,释放内存 
  20.   
  21. delete_data("计算机科学"); 

小明开心的回家了,他一走我又把成绩写回去了……

5-读取表中数据

学校要把小明的成绩单打印出来。

ExecuteReader()的用法来了啊,谢谢你看到这里。

用法就在下面的代码中啦

  1. select * from 考试成绩表 
  2. public static void get_data() 
  3. //测试连接数据库 
  4. string connStr = "Data Source=LAPTOP-82MUPKTO;Initial Catalog=CSDN予我心安A3的数据库;Integrated Security=True"
  5. SqlConnection conn = new SqlConnection(connStr); 
  6. //打开数据库 
  7. conn.Open(); 
  8.   
  9. //编写sql语句,语法即sql语法 
  10. string sql = String.Format("select * from 考试成绩表"); 
  11. SqlCommand cmd = new SqlCommand(sql, conn); 
  12.   
  13. SqlDataReader rdr = cmd.ExecuteReader();//定义数据读取器rdr获取传回的数据 
  14. while (rdr.Read())//每次执行一次Read(),从数据里读取一行数据 
  15. string classname=rdr["课程名"].ToString();//根据列名,获得该行里的课程名信息,由于rdr["课程名"]返回的是object类型,所以要进行类型转化,下面成绩一样的原理 
  16. int grade = Convert.ToInt32(rdr["成绩"]);//根据列名,获得该行里的成绩信息 
  17. Console.WriteLine("课程名:{0},成绩:{1}",classname,grade); 
  18. conn.Close();//读取时要一直保证数据库是打开的 
  19.   

小明伤心的拿着成绩单走了..........

相关文章

站点信息