当前位置:   article > 正文

如何使用C#与SQL Server数据库进行交互_c#程式和数据库沟通

c#程式和数据库沟通

一.创建数据库

用VS 创建数据库的步骤:

1.打开vs,创建一个新项目,分别在搜素框中选择C#、Windows、桌面,然后选择Windows窗体应用(.NET Framework)

2.打开“视图-服务器资源管理器”,右键单击“数据连接”,如图。在弹出的菜单中选择【创建新SQL Server 数据库】选项,弹出“创建新的SQL Server数据库”对话框。

3.对应项目,系统添加数据库连接。(要是电脑没有sql server,可以选中“视图-sql server资源管理器”创建数据库)

连接成功即如下(第一次可能只有一个)

4.新建数据库XSCJDB(学生成绩数据库),点开第二个小三角-右键点击数据库-添加新数据库

自己取名(最好采用英文命名)

5.选中该数据库并创建新表student,点击新建数据库前的小三角-右键表-添加新表

6.表中插入属性,双击即可打开

7.右键选中表查看表中数据

二.使用控件实现连接数据库并对其操作

       (1)在工具箱中拖出dataGridView控件和botton控件(可以改名使其功能明确)

(2)双击botton1,进入代码编写(检查数据库的连接)

  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. string strcom = @"Data Source = (localdb)\ProjectModels;Initial Catalog = XSCJDB; Integrated Security = True;";
  4. SqlConnection sqlcon;
  5. using (sqlcon = new SqlConnection(strcom))
  6. {
  7. sqlcon.Open();
  8. MessageBox.Show("数据库连接状态" + sqlcon.State.ToString(), "第一个对话框");
  9. }
  10. MessageBox.Show("数据库连接状态" + sqlcon.State.ToString(), "第二个对话框");
  11. }

注意:

此处应根据自己的电脑修改,具体步骤如下:

单击刚建的数据库-在右下角解决方案资源管理器中找到连接字符串-复制第一个True前面的内容

(3)双击双击botton2,进入代码编写(插入数据)

  1. private void button2_Click(object sender, EventArgs e)
  2. {
  3. string strcom = @"Data Source = (localdb)\ProjectModels;Initial Catalog = XSCJDB; Integrated Security = True;";
  4. SqlConnection conn =null;
  5. try
  6. {
  7. conn = new SqlConnection(strcom);
  8. conn.Open();
  9. SqlCommand mycmm= new SqlCommand();
  10. mycmm.Connection = conn;
  11. mycmm.CommandType = CommandType.Text;
  12. mycmm.CommandText = @"insert into
  13. student(Id,name,major,grade,tel)
  14. values(@Id,@name,@major,@grade,@tel)";
  15. mycmm.Parameters.Add(new SqlParameter("@Id", 2022002));
  16. mycmm.Parameters.Add(new SqlParameter("@name", "李四"));
  17. mycmm.Parameters.Add(new SqlParameter("@major", "CS"));
  18. mycmm.Parameters.Add(new SqlParameter("@grade","80"));
  19. mycmm.Parameters.Add(new SqlParameter("@tel","13999216"));
  20. int returnvalue=mycmm.ExecuteNonQuery();
  21. if(returnvalue!=-1)
  22. {
  23. MessageBox.Show("数据插入成功");
  24. }
  25. }
  26. catch(Exception ex)
  27. {
  28. if(conn != null)
  29. {
  30. MessageBox.Show("数据插入失败" + ex.Message);
  31. }
  32. }
  33. }

(4)双击双击botton3,进入代码编写(查询全部数据)

  1. // 处理button3的点击事件,从数据库中查询并显示所有数据
  2. private void button3_Click(object sender, EventArgs e)
  3. {
  4. // 数据库连接字符串
  5. string strcom = @"Data Source = (localdb)\ProjectModels;Initial Catalog = XSCJDB; Integrated Security = True;";
  6. SqlConnection conn = null;
  7. try
  8. {
  9. // 初始化并打开数据库连接
  10. conn = new SqlConnection(strcom);
  11. conn.Open();
  12. // 创建并配置SqlCommand对象
  13. SqlCommand mycmm = new SqlCommand
  14. {
  15. Connection = conn,
  16. CommandType = CommandType.Text,
  17. CommandText = @"select * from student"
  18. };
  19. // 使用SqlDataAdapter填充DataSet
  20. SqlDataAdapter sda = new SqlDataAdapter(mycmm);
  21. DataSet ds = new DataSet();
  22. sda.Fill(ds, "studentList");
  23. // 显示查询结果到DataGridView
  24. dataGridView2.DataSource = ds.Tables["studentList"].DefaultView;
  25. // 关闭数据库连接
  26. conn.Close();
  27. }
  28. catch (Exception ex)
  29. {
  30. // 处理异常
  31. MessageBox.Show(ex.Message);
  32. if (conn != null)
  33. {
  34. conn.Close();
  35. }
  36. }
  37. }

(5)在设计界面再拖入botton以及一个textbox(用于根据姓名查询)

(6)编写botton4代码(按名字查询)

  1. // 处理button4的点击事件,根据名字查询数据
  2. private void button4_Click(object sender, EventArgs e)
  3. {
  4. // 数据库连接字符串
  5. string strcon = @"Data Source = (localdb)\ProjectModels;Initial Catalog = XSCJDB; Integrated Security = True;";
  6. SqlConnection myConnection = new SqlConnection(strcon);
  7. try
  8. {
  9. // 打开数据库连接
  10. myConnection.Open();
  11. // 创建并配置SqlCommand对象
  12. SqlCommand myCommand = new SqlCommand
  13. {
  14. Connection = myConnection,
  15. CommandType = CommandType.Text,
  16. CommandText = @"select * from student where name =@name"
  17. };
  18. // 添加参数并赋值
  19. myCommand.Parameters.Add(new SqlParameter("@name", textBox1.Text));
  20. // 执行查询命令并检查结果
  21. int res = Convert.ToInt32(myCommand.ExecuteScalar());
  22. if (res == 0)
  23. {
  24. throw new Exception("查无此人");
  25. }
  26. // 使用SqlDataAdapter填充DataSet
  27. SqlDataAdapter sda = new SqlDataAdapter(myCommand);
  28. DataSet ds = new DataSet();
  29. sda.Fill(ds, "xr");
  30. // 显示查询结果到DataGridView
  31. dataGridView2.DataSource = ds.Tables["xr"].DefaultView;
  32. // 关闭数据库连接
  33. myConnection.Close();
  34. }
  35. catch (Exception ex)
  36. {
  37. // 处理异常
  38. MessageBox.Show(ex.ToString());
  39. if (myConnection != null)
  40. {
  41. myConnection.Close();
  42. }
  43. }
  44. }

(7)对于dataGritView的代码

  1. // 保存编辑单元格的原始值
  2. object cellTempValue = null;
  3. // 单元格开始编辑事件
  4. private void dataGridView2_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
  5. {
  6. // 保存单元格的原始值
  7. cellTempValue = this.dataGridView2.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
  8. }
  9. // 单元格结束编辑事件
  10. private void dataGridView2_CellEndEdit(object sender, DataGridViewCellEventArgs e)
  11. {
  12. // 如果单元格值没有改变,返回
  13. if (object.Equals(cellTempValue, this.dataGridView2.Rows[e.RowIndex].Cells[e.ColumnIndex].Value))
  14. {
  15. return;
  16. }
  17. // 弹出确认修改对话框
  18. if (MessageBox.Show("是否确定修改,并更新到数据库", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK)
  19. {
  20. // 如果取消修改,恢复原值
  21. this.dataGridView2.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = cellTempValue;
  22. return;
  23. }
  24. // 数据库连接字符串
  25. string strcom = @"your string";
  26. SqlConnection myConnection = new SqlConnection(strcom);
  27. try
  28. {
  29. // 打开数据库连接
  30. myConnection.Open();
  31. // 创建并配置SqlCommand对象
  32. SqlCommand myCommand = new SqlCommand
  33. {
  34. Connection = myConnection,
  35. CommandType = CommandType.Text
  36. };
  37. // 构建更新SQL语句
  38. string strSql = String.Format(
  39. "update student set {0}='{1}' where Id='{2}'",
  40. this.dataGridView2.Columns[e.ColumnIndex].HeaderText, // 当前选择的列名
  41. this.dataGridView2.Rows[e.RowIndex].Cells[e.ColumnIndex].Value, // 选中单元格修改后的值
  42. this.dataGridView2.Rows[e.RowIndex].Cells[0].Value // 选中单元格修改前的值
  43. );
  44. // 设置命令文本
  45. myCommand.CommandText = strSql;
  46. // 执行更新命令
  47. int res = myCommand.ExecuteNonQuery();
  48. // 检查更新是否成功
  49. if (res == 0)
  50. {
  51. throw new Exception("修改失败");
  52. }
  53. else
  54. {
  55. MessageBox.Show("修改成功");
  56. }
  57. // 关闭数据库连接
  58. myConnection.Close();
  59. }
  60. catch (Exception ex)
  61. {
  62. // 处理异常
  63. MessageBox.Show(ex.ToString());
  64. if (myConnection != null)
  65. {
  66. myConnection.Close();
  67. }
  68. }
  69. }

三.实现

1.设计界面

2.运行

2.1连接数据库(点击连接数据库-确定-确定)即连接成功

2.2增加数据

2.3查询全部数据

2.4按名字查询

四.小结及易错点

这个Windows Forms应用程序展示了如何连接本地数据库XSCJDB,并实现了数据插入、查询和删除等基本功能。以下是对该应用程序的小结:

1. 数据库连接与测试:通过点击按钮可以测试与数据库的连接,确保应用程序能够成功连接到本地数据库XSCJDB。

2. 数据插入:点击相应按钮可以将预设的学生信息插入到数据库的student表中,这提供了一种简单的数据录入方式。

3. 数据查询:通过点击按钮,应用程序能够查询并显示student表中的所有数据,使用户可以轻松地查看数据库中存储的信息。

4. 按姓名查询:应用程序还提供了按姓名查询学生数据的功能,用户只需输入学生姓名,即可获取相应的学生信息。

5. 数据删除:用户可以根据学生姓名删除相应的学生记录,这增加了对数据的管理和维护功能。

在编写这个应用程序时,需要注意以下易错点:

  • 数据库连接字符串的正确性:确保连接字符串中的数据库名称、实例名称等信息正确无误,以保证成功连接到数据库。
  • SQL语句的准确性:编写SQL语句时,应确保表名和字段名与数据库中定义的一致,以避免出现语法错误。
  • 参数化查询的使用:在执行SQL操作时,应该使用参数化查询来防止SQL注入攻击,提高数据安全性。
  • 数据库连接的管理:在编写代码时,应该使用try-finally块或者using语句来管理数据库连接,确保在异常情况下正确关闭连接,以避免资源泄漏。
  • 异常处理和错误提示:捕获并处理所有可能的异常,向用户提供友好的错误提示信息,帮助用户理解问题所在并采取相应的措施。

通过对这些易错点的注意和处理,可以确保应用程序的稳定性、安全性和用户友好性。同时,还可以考虑进一步优化应用程序的功能和性能,提升用户体验。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/745528
推荐阅读
相关标签
  

闽ICP备14008679号