C#操作数据库总结(vs2005+sql2005)

C#操作数据库总结(vs2005+sql2005)

数据库连接

首先,需要引入 System.Data.SqlClient 命名空间,使用 SqlConnection 类来表示数据库连接。

建议使用 using 语句块来确保连接被正确释放:

using System.Data.SqlClient;
// ...
string connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    // TODO: 数据库操作
}

其中,connectionString 是连接字符串,可以指定连接的服务器地址、数据库名称、用户名和密码等参数。

执行 SQL 查询

使用 SqlCommand 类来执行 SQL 查询,假设需要查询 Person 表中的所有记录:

using (SqlCommand command = new SqlCommand("SELECT * FROM Person", connection))
{
    using (SqlDataReader reader = command.ExecuteReader())
    {
        while (reader.Read())
        {
            // 读取记录的每个字段
            int id = reader.GetInt32(0);
            string name = reader.GetString(1);
            int age = reader.GetInt32(2);

            // TODO: 处理记录
        }
    }
}

其中,command.ExecuteReader() 执行查询并返回一个 SqlDataReader 对象,可以使用 reader 对象来读取查询结果的每条记录,reader.GetInt32(0)reader.GetString(1) 等方法可以读取每个字段的值。

如果希望执行 SQL 命令(不需要返回结果集),可以使用 command.ExecuteNonQuery() 方法,下面是一个插入记录的示例:

using (SqlCommand command = new SqlCommand("INSERT INTO Person (Name, Age) VALUES ('Tom', 20)", connection))
{
    command.ExecuteNonQuery();
}

参数化查询

在执行 SQL 查询或命令时,可以使用参数化查询来避免 SQL 注入攻击或提高程序的性能。参数化查询实际上是将 SQL 语句中变化的部分用参数代替。

例如,下面是一个参数化查询:

using (SqlCommand command = new SqlCommand("SELECT * FROM Person WHERE Name = @Name", connection))
{
    command.Parameters.AddWithValue("@Name", "Tom");

    using (SqlDataReader reader = command.ExecuteReader())
    {
        // ...
    }
}

其中,command.Parameters.AddWithValue("@Name", "Tom") 方法将参数 @Name 的值设置为 Tom,在 SQL 语句中使用 @Name 代替实际的值。

参数化查询有以下好处:

  • 避免 SQL 注入攻击,因为参数值不会被当作 SQL 语句的一部分来解释。
  • 提高程序的性能,因为数据库引擎可以缓存编译好的 SQL 语句。如果使用变量来代替常量值,则每次查询都需要编译成新的查询计划。

示例说明

示例一:查询员工信息并显示

下面是一个示例,假设数据库中有一个 Employee 表,存储了员工的姓名和工资信息。现在需要查询该表中工资大于 3000 的员工信息并在界面上显示。

首先,需要创建一个 Windows 窗口应用程序,界面上放置一个 DataGridView 控件用来显示查询结果。然后,添加以下代码:

private void btnQuery_Click(object sender, EventArgs e)
{
    string connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        // 打开数据库连接
        connection.Open();

        // 创建 SQL 查询命令
        using (SqlCommand command = new SqlCommand("SELECT Name, Salary FROM Employee WHERE Salary > @Salary", connection))
        {
            // 添加参数
            command.Parameters.AddWithValue("@Salary", 3000);

            // 执行查询并读取结果集到 DataTable
            using (SqlDataAdapter adapter = new SqlDataAdapter(command))
            {
                DataTable table = new DataTable();
                adapter.Fill(table);

                // 设置 DataGridView 显示的数据源
                dataGridView1.DataSource = table;
            }
        }
    }
}

在查询按钮的 Click 事件中,创建 SqlConnectionSqlCommand 对象,然后添加参数并执行查询。最后,使用 SqlDataAdapter 将查询结果读取到一个 DataTable 中,将该 DataTable 设置为 DataGridView 控件的数据源。这样,当用户点击查询按钮时,程序会连接到数据库并显示查询结果。

示例二:添加员工信息

下面是另一个示例,假设需要添加一条新的员工信息到 Employee 表中。

首先,需要在界面上添加几个 TextBox 控件用来输入员工姓名和工资信息,然后添加一个“添加”按钮。然后,添加以下代码:

private void btnAdd_Click(object sender, EventArgs e)
{
    string connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        // 打开数据库连接
        connection.Open();

        // 创建 SQL 查询命令
        using (SqlCommand command = new SqlCommand("INSERT INTO Employee(Name, Salary) VALUES (@Name, @Salary)", connection))
        {
            // 添加参数
            command.Parameters.AddWithValue("@Name", txtName.Text);
            command.Parameters.AddWithValue("@Salary", int.Parse(txtSalary.Text));

            // 执行命令并获取影响的行数
            int rowsAffected = command.ExecuteNonQuery();

            // 如果有影响的行数,表示插入成功
            if (rowsAffected > 0)
            {
                MessageBox.Show("添加成功!");
            }
            else
            {
                MessageBox.Show("添加失败!");
            }
        }
    }
}

在添加按钮的 Click 事件中,创建 SqlConnectionSqlCommand 对象,然后添加参数并执行查询。使用 int.Parse(txtSalary.Text)txtSalary 控件的文本内容解析为整数并作为参数值,在 command.ExecuteNonQuery() 方法中执行 INSERT 命令并获取受影响的行数,如果大于 0,则表示插入成功,否则表示插入失败。在成功或失败时,使用 MessageBox 弹出提示信息。

这样,当用户输入员工信息并点击“添加”按钮时,程序会连接到数据库并插入新的记录,根据插入结果弹出提示信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#操作数据库总结(vs2005+sql2005) - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • 向MySQL发送一个请求的时候,MySQL到底做了些什么?

    当向MySQL发送一个请求时,MySQL会执行以下步骤: 首先,MySQL会解析SQL语句,确定查询的类型和所涉及的数据表。 MySQL会检查用户是否有足够的权限执行该查询操作。 如果查询需要访问多个数据表,则MySQL会决定如何连接这些数据表,以及采用哪种连接算法。 MySQL会根据查询条件和数据表中的索引信息来生成执行计划,该计划将指导MySQL如何访问…

    MySQL 2023年3月10日
    00
  • windows下mysql-python安装出错

    注意:python2.x用mysql-python,从Python3.x起,变更为mysqlclient windows安装python的mysql驱动是so easy的: pip install mysql-python 但是毫不意外的出错了: _mysql.c(42) : fatal error C1083: Cannot open include fi…

    MySQL 2023年4月12日
    00
  • redis master配置了密码进行主从同步

    1.如果master不设置密码,那么直接在slave服务器配置slaveof即可 配置如下 #slaveof ip 端口 slaveof 221.224.85.186 6379  配置好我们看下redis的日志 看是否同步成功 5014:S 25 Jan 10:53:53.667 * Connecting to MASTER 221.224.85.186:6…

    Redis 2023年4月13日
    00
  • ubuntu kylin 14.10下多个mysql 5.7.14安装教程

    Ubuntu Kylin 14.10下多个mysql 5.7.14安装教程 介绍 本文将介绍在Ubuntu Kylin 14.10操作系统下如何安装多个 mysql 版本为 5.7.14 的方法。 准备工作 在开始之前,需要先卸载掉当前系统中已经安装的 mysql,以免和即将安装的版本产生不必要的冲突。 sudo apt-get purge mysql-se…

    database 2023年5月22日
    00
  • mysql命令行下执行sql文件的几种方法

    执行SQL文件是MySQL命令行下的常用操作之一。以下是三种常见的方法: 方法一:使用 Source 命令 语法: source file_name; 将SQL文件(file_name)的绝对路径或相对路径作为参数传递给source命令,MySQL将会直接执行该SQL文件中的命令。 示例: 假设SQL文件名为test.sql,并且文件路径为/root/tes…

    database 2023年5月22日
    00
  • Redis基础命令

           笔者最初接触Redis是因为了解了一些nosql方面的知识,觉得nosql是一个很有意思的方面。像其中的mongodb,redis等等。当初也没有深入的去了解Redis,直到自己前段时间在写一个web项目的时候需要用到缓存来进行性能优化我才仔细的来学习Redis。下面我就来说说我自己在学习Redis过程中的一些心得。         Redis…

    Redis 2023年4月16日
    00
  • python的mysqldb安装步骤详解

    下面我将详细讲解“Python的MySQLdb安装步骤详解”的完整攻略。 1. 安装MySQL服务器和客户端组件 在安装MySQLdb之前,首先需要安装MySQL服务器和客户端组件。MySQL可以通过官方网站提供的安装包进行下载和安装。安装方法可以参考MySQL官方文档,文档链接如下: https://dev.mysql.com/doc/mysql-inst…

    database 2023年5月22日
    00
  • 解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别

    解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别 介绍 在MySQL和PHP中,UNIX_TIMESTAMP()函数和time()函数都用于返回当前时间距离1970年1月1日00:00:00的秒数,但二者之间还是存在一些区别。 MySQL的UNIX_TIMESTAMP()函数 UNIX_TIMESTAMP()函数用于返回当…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部