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 查询语句,以便于快速查询和使用。 二、基本查询 SE…

    database 2023年5月21日
    00
  • 如何使用Python在MySQL中使用联合查询?

    以下是如何使用Python在MySQL中使用联合查询的完整使用攻略,包括连接MySQL数据库、创建表、插入数据、使用联合查询等步骤。同时,提供两个示例以便更好理解如何使用Python在MySQL中使用联合查询。 步骤1:连接MySQL数据库 在Python中,我们可以使用pymysql模块连接到MySQL数据库。以下是连接MySQL数据库的基本语法: imp…

    python 2023年5月12日
    00
  • 逐步讲解MySQL中定时事件计划的创建

    MySQL中的定时事件计划可以让用户定期执行一些SQL语句,例如执行数据备份、数据清理等操作,这对于数据库管理员来说十分方便。下面是创建MySQL定时事件计划的攻略: 1. 启动MySQL事件调度程序 MySQL中默认关闭了事件调度程序,需要通过以下两种方式之一启动: 连接MySQL服务器,运行以下命令: sql SET GLOBAL event_sched…

    database 2023年5月22日
    00
  • Spark整合Mongodb的方法

    下面是详细的”Spark整合Mongodb的方法”攻略。 一、环境搭建 在本地环境或者云服务器上安装以下环境:- Spark集群- MongoDB Spark需要安装MongoDB的Java驱动程序,可以在以下网址中下载:https://mongodb.github.io/mongo-java-driver/。 二、使用Spark-shell与MongoDB…

    database 2023年5月22日
    00
  • MySql命令实例汇总

    当你需要管理MySQL数据库时,你需要掌握一些基本的MySQL命令。下面我们将分享一个MySQL命令实例汇总,这个实例汇总中包含了常见的MySQL命令,帮助你更好地管理你的MySQL数据库。 1. 登录MySQL 使用命令mysql -u 用户名 -p 登录MySQL,需输入密码。 例如:登录MySQL用户名为root,密码为123456的写法如下所示: m…

    database 2023年5月21日
    00
  • laravel实现按月或天或小时统计mysql数据的方法

    要实现按照月、日或小时统计MySQL数据,我们可以使用Laravel框架提供的Eloquent ORM来进行查询。 步骤一:准备数据模型 首先我们需要建立一个数据模型来与数据库中的表进行交互。假设我们有一个日志表,用来记录用户在我们网站上的行为。在Laravel中,我们可以使用以下命令来创建一个日志模型: php artisan make:model Log…

    database 2023年5月22日
    00
  • dm.jdbc.driver.DMException网络通信异常的解决过程

    下面是针对“dm.jdbc.driver.DMException网络通信异常的解决过程”的完整攻略: 1. 确认异常信息 当出现dm.jdbc.driver.DMException异常,首先需要确认异常信息,具体包括: 是否是网络通信异常; 异常抛出的具体原因; 异常的出现频率和时间等。 只有正确的确认异常信息,才能有针对性的解决问题。 2. 检查网络连接 …

    database 2023年5月19日
    00
  • MySQL查看表结构的3种方法

    MySQL是一种流行的关系型数据库管理系统,拥有丰富的功能和工具,包括查看表结构的方法。下面是MySQL查看表结构的方法: 使用DESCRIBE查询语句 DESCRIBE语句是MySQL中查看表结构的一种基本方法。该命令可以显示表的列名、数据类型、键类型等信息。 语法: DESCRIBE table_name; 实例:假设我们要查看名为“employees”…

    MySQL 2023年3月9日
    00
合作推广
合作推广
分享本页
返回顶部