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

yizhihongxing

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日

相关文章

  • sql语句中临时表使用实例详解

    SQL语句中临时表使用实例详解 在SQL中,临时表可以帮助我们处理一些复杂的查询,同时避免繁琐的多表查询或者嵌套查询。 创建临时表 创建临时表使用CREATE TEMPORARY TABLE语句。下面是一个示例: CREATE TEMPORARY TABLE temp_table ( id INT NOT NULL, name VARCHAR(50) NOT…

    database 2023年5月21日
    00
  • mysql杀进程脚本

    mysql>kill thread_id; kill掉第一个锁表的进程, 依然没有改善. 既然不改善, 咱们就想办法将所有锁表的进程kill掉吧, 简单的脚本如下. #!/bin/bashmysql -u root -e “show processlist” | grep -i “Locked” >> locked_log.txt for …

    MySQL 2023年4月12日
    00
  • linux自动运行rman增量备份脚本

    下面是“Linux自动运行RMAN增量备份脚本”的完整攻略: 1. 编写RMAN增量备份脚本 我们首先需要编写RMAN增量备份脚本,这个脚本的作用是连接到Oracle数据库,执行增量备份操作,并将备份文件保存到指定的位置。以下是一个简单的示例脚本: #!/bin/bash # set RMAN environment variables export ORA…

    database 2023年5月22日
    00
  • MySQL查看用户权限的3种方法

    MySQL是一种关系型数据库管理系统,在使用MySQL时,我们有时需要查看某个用户的权限,以便进行修改、授权等操作,因此了解MySQL查看用户权限的方法非常重要。以下是详细说明: 通过show grants命令查看权限列表 show grants 命令用于查看当前用户的所有权限。如果想查看其他用户的权限,需要使用该用户的用户名和密码进行登录,再执行该命令。该…

    MySQL 2023年3月10日
    00
  • (一)redis源码阅读

    目录 1. srand()和rand()函数以及随机数种子 2. 守护进程及pid文件 3. 初始化服务器时的信号处理 4. 在程序coredump时记录堆栈信息StackTrace 5. 线程主循环 6. 时间戳 7. 全局时间缓存 8. run_with_period 宏 9. /proc/getpid()/stat 10. Redis Command …

    Redis 2023年4月12日
    00
  • Ubuntu下安装Chrome的方法分享

    Ubuntu下安装Chrome的方法分享 简介 本文将介绍在Ubuntu系统下安装Google Chrome的方法,并且需要使用命令行工具。 步骤 1. 添加Chrome源 打开命令行终端,输入以下命令: wget -q -O – https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key…

    database 2023年5月22日
    00
  • SQL Server 2005 安装遇到的错误提示和解决方法

    SQL Server 2005 安装遇到的错误提示和解决方法 在安装 SQL Server 2005 的过程中,可能会遇到各种错误提示,下面列出常见的错误提示及其解决方法。 错误提示 1:Operation system supported for edition upgrade only. 这个错误提示通常是由于安装的 SQL Server 2005 版本…

    database 2023年5月18日
    00
  • MySQL检索数据操作方法梳理

    MySQL检索数据操作方法梳理 MySQL作为一种开源且广泛应用的关系型数据库管理系统,其检索数据的操作方法是数据库开发中经常使用的基本技能。下面是MySQL检索数据操作方法的详细攻略,包括基本语法、常用关键字和示例说明等内容。 基本语法 在MySQL中,检索数据的基本语法为: SELECT column1, column2, … FROM table_…

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