C#操作MSSQL数据库 -增删改查

要在C#中连接到Microsoft SQL Server数据库(MSSQL),你可以使用.NET Framework提供的System.Data.SqlClient命名空间中的类。

以下是一个简单的示例代码,展示了如何在C#中使用MSSQL数据库链接:

using System;
using System.Data.SqlClient;

namespace DatabaseExample
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = "Data Source=YourServer;Initial Catalog=YourDatabase;User ID=YourUsername;Password=YourPassword";

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

                // 创建表
                string createTableQuery = "CREATE TABLE Persons (Id INT PRIMARY KEY, Name VARCHAR(50), Age INT)";
                using (SqlCommand createTableCommand = new SqlCommand(createTableQuery, connection))
                {
                    createTableCommand.ExecuteNonQuery();
                    Console.WriteLine("Table created successfully.");
                }

                // 插入数据
                string insertQuery = "INSERT INTO Persons (Id, Name, Age) VALUES (1, 'John', 30)";
                using (SqlCommand insertCommand = new SqlCommand(insertQuery, connection))
                {
                    insertCommand.ExecuteNonQuery();
                    Console.WriteLine("Data inserted successfully.");
                }

                // 查询数据
                string selectQuery = "SELECT * FROM Persons";
                using (SqlCommand selectCommand = new SqlCommand(selectQuery, connection))
                {
                    using (SqlDataReader reader = selectCommand.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            int id = reader.GetInt32(0);
                            string name = reader.GetString(1);
                            int age = reader.GetInt32(2);
                            Console.WriteLine("Id: {0}, Name: {1}, Age: {2}", id, name, age);
                        }
                    }
                }

                // 关闭连接
                connection.Close();
            }

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
    }
}

在上述代码中,你需要替换serverNamedatabaseNameuserNamepassword为你实际的数据库服务器名称、数据库名称、登录用户名和密码。connectionString变量是用于建立数据库连接的连接字符串。

代码中的using语句块确保在使用完数据库连接后正确关闭连接。

try块中,通过调用SqlConnectionOpen方法打开数据库连接,并执行你需要的数据库操作。你可以在该块中添加自己的代码来执行SQL查询、插入、更新或删除操作。

catch块中,任何连接异常都会被捕获并输出错误消息。

最后,使用Console.ReadLine()方法等待用户按下Enter键,以保持控制台应用程序运行,以便你能够查看连接状态。

请记得在使用此代码之前,确保已安装.NET Framework,并将项目的引用中添加System.Data.SqlClient程序集。

---------------------

using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Data Source=serverName;Initial Catalog=databaseName;User ID=userName;Password=password";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            try
            {
                connection.Open();
                Console.WriteLine("数据库连接成功!");

                // 查询操作
                string query = "SELECT * FROM TableName";
                SqlCommand selectCommand = new SqlCommand(query, connection);

                using (SqlDataReader reader = selectCommand.ExecuteReader())
                {
                    Console.WriteLine("查询结果:");
                    Console.WriteLine("----------------------------");

                    while (reader.Read())
                    {
                        int id = reader.GetInt32(0);
                        string name = reader.GetString(1);

                        Console.WriteLine($"ID: {id}, Name: {name}");
                    }

                    Console.WriteLine("----------------------------");
                    Console.WriteLine();
                }

                // 插入操作
                string insertQuery = "INSERT INTO TableName (Column1, Column2) VALUES (@Value1, @Value2)";
                SqlCommand insertCommand = new SqlCommand(insertQuery, connection);
                insertCommand.Parameters.AddWithValue("@Value1", "Value1");
                insertCommand.Parameters.AddWithValue("@Value2", "Value2");
                int rowsInserted = insertCommand.ExecuteNonQuery();
                Console.WriteLine($"已插入 {rowsInserted} 行数据。");

                // 更新操作
                string updateQuery = "UPDATE TableName SET Column1 = @NewValue WHERE Column2 = @FilterValue";
                SqlCommand updateCommand = new SqlCommand(updateQuery, connection);
                updateCommand.Parameters.AddWithValue("@NewValue", "NewValue");
                updateCommand.Parameters.AddWithValue("@FilterValue", "FilterValue");
                int rowsUpdated = updateCommand.ExecuteNonQuery();
                Console.WriteLine($"已更新 {rowsUpdated} 行数据。");

                // 删除操作
                string deleteQuery = "DELETE FROM TableName WHERE Column1 = @FilterValue";
                SqlCommand deleteCommand = new SqlCommand(deleteQuery, connection);
                deleteCommand.Parameters.AddWithValue("@FilterValue", "FilterValue");
                int rowsDeleted = deleteCommand.ExecuteNonQuery();
                Console.WriteLine($"已删除 {rowsDeleted} 行数据。");

                connection.Close();
                Console.WriteLine("数据库连接已关闭。");
            }
            catch (Exception ex)
            {
                Console.WriteLine("数据库连接失败: " + ex.Message);
            }
        }

        Console.ReadLine();
    }
}

在上述示例代码中,我们添加了插入、更新和删除数据的操作。

  • 插入数据:使用INSERT INTO语句并通过SqlParameter对象设置参数值来插入数据。使用ExecuteNonQuery方法执行插入操作,并获取受影响的行数。
  • 更新数据:使用UPDATE语句并通过SqlParameter对象设置参数值来更新数据。使用ExecuteNonQuery方法执行更新操作,并获取受影响的行数。
  • 删除数据:使用DELETE FROM语句并通过SqlParameter对象设置参数值来删除数据。使用ExecuteNonQuery方法执行删除操作,并获取受影响的行数。

-----------------------------

System.Data.SqlClient.SqlDataReader是用于在C#中读取来自Microsoft SQL Server数据库的结果集的类。它提供了一种逐行读取数据的方式,使你能够有效地处理大量的查询结果。

下面是一些常用的SqlDataReader的成员和方法:

  1. Read(): 用于读取结果集中的下一行数据。如果有更多行可用,返回true;否则,返回false

  2. 索引器(Indexer):使用列的索引或列名来访问当前行中的数据。例如,reader[0]可以获取第一个列的值,reader["ColumnName"]可以获取名为"ColumnName"的列的值。

  3. GetXXX(): 一系列的GetXXX方法用于获取不同数据类型的列值,如GetInt32()GetString()GetDateTime()等。这些方法接受列的索引或列名作为参数,并返回相应的数据类型的值。

  4. IsDBNull(): 用于检查当前行中的特定列的值是否为空(DBNull)。接受列的索引或列名作为参数,如果值为空,则返回true;否则,返回false

  5. Close(): 关闭SqlDataReader对象,并释放相关资源。

  6. Dispose(): 实现IDisposable接口的方法,用于释放资源。

-----------------

SqlDataReader类提供了一系列的GetXXX()方法,用于获取不同数据类型的列值。下面是一些常用的GetXXX()方法及其对应的数据类型:

  • GetBoolean: 获取布尔型(bool)列的值。
  • GetByte: 获取字节型(byte)列的值。
  • GetBytes: 获取二进制数据列的值,并将其读取到字节数组中。
  • GetChar: 获取字符型(char)列的值。
  • GetDateTime: 获取日期时间型(DateTime)列的值。
  • GetDecimal: 获取十进制数型(decimal)列的值。
  • GetDouble: 获取双精度浮点型(double)列的值。
  • GetFloat: 获取单精度浮点型(float)列的值。
  • GetGuid: 获取全局唯一标识符(GUID)列的值。
  • GetInt16: 获取短整型(short)列的值。
  • GetInt32: 获取整型(int)列的值。
  • GetInt64: 获取长整型(long)列的值。
  • GetString: 获取字符串型(string)列的值。

这些方法接受列的索引或列名作为参数,并返回相应的数据类型的值。你可以根据数据库中实际的列类型,选择适当的GetXXX()方法来获取对应的列值。

-------------

确保在读取数据时注意数据类型的匹配非常重要。以下是一些需要注意的事项:

  1. 使用正确的数据类型方法:根据数据库中列的数据类型,选择适当的SqlDataReader方法来读取数据。例如,如果列是整数类型,使用GetInt32;如果列是字符串类型,使用GetString;如果列是日期类型,使用GetDateTime等等。使用不匹配的方法可能会导致数据转换错误或异常。

  2. 检查DBNull:在读取数据库中的数据时,有可能会遇到DBNull.Value,表示某一列的值为空。在使用SqlDataReader读取每一列数据之前,最好使用IsDBNull方法检查该列的值是否为空,然后再进行适当的处理。

if (!reader.IsDBNull(columnIndex))
{
    // 读取数据
}
else
{
    // 处理空值情况
}

3.处理可为null的列:如果数据库中的某个列允许为空(即可为null),并且你使用了相应的数据类型来读取该列的值,那么需要注意处理可能出现的空值情况。你可以使用IsDBNull方法进行检查,或者使用可空类型(Nullable types)来接收该列的值。

例如,如果列Age允许为空,你可以使用GetInt32方法读取该列的值,并将其存储在int?(可空整数类型)变量中:

int? age = reader.IsDBNull(columnIndex) ? null : (int?)reader.GetInt32(columnIndex);

这样,如果列的值为空,age变量将被赋值为null;否则,它将被赋值为读取到的整数值。

4.注意数据精度和溢出:在读取数据库中的数值数据时,要确保目标变量的数据类型足够大以容纳可能的数值范围。如果目标变量的数据类型不足以容纳读取到的值,可能会发生数据溢出。

总之,在读取数据库数据时,确保使用正确的数据类型方法、处理空值情况以及注意数据精度和溢出问题是非常重要的,以确保正确解析和处理数据。根据数据库中列的数据类型进行适当的类型匹配和错误处理,可以提高代码的健壮性和可靠性。

-------------------

学习如何使用C#操作MSSQL数据库需要掌握以下内容:

  1. 基本的C#编程知识:在学习使用C#操作MSSQL之前,你需要对C#编程语言有基本的了解,包括语法、控制流、变量和数据类型、方法和类等基础知识。

  2. 数据库基础知识:了解数据库的基本概念和术语,包括表、列、行、主键、外键、索引等。掌握SQL语言的基本语法,包括SELECT、INSERT、UPDATE和DELETE等操作,以及条件、排序和聚合函数等。

  3. ADO.NET:ADO.NET是用于访问数据库的.NET框架的一部分。学习ADO.NET的基本概念和原理,包括连接数据库、执行SQL语句、处理结果集等。

  4. SqlConnection和SqlCommand类:掌握使用SqlConnection和SqlCommand类来建立数据库连接、执行SQL语句以及处理查询结果。

  5. SqlDataReader类:学习如何使用SqlDataReader类逐行读取查询结果集的数据。

  6. 参数化查询:了解参数化查询的概念和重要性,学习如何使用SqlParameter类来执行参数化查询,以避免SQL注入和提高安全性。

  7. 错误处理和异常处理:学习如何处理数据库操作中可能出现的错误和异常情况,包括连接失败、查询语法错误、数据类型转换错误等。

  8. 事务处理:了解事务的概念和作用,学习如何使用事务来确保数据库操作的一致性和完整性。

  9. 数据库连接池:了解数据库连接池的概念和作用,学习如何正确管理和利用连接池以提高数据库访问性能。

  10. LINQ to SQL或Entity Framework:这些是.NET中更高级的ORM(对象关系映射)工具,它们提供了更方便和高级的方式来操作数据库,可以进一步简化数据库访问的代码。

为了深入学习掌握C#操作MSSQL,你可以采取以下步骤:

  1. 学习C#语言基础知识,包括语法、控制流、变量和数据类型、方法和类等。可以通过在线教程、教材或视频课程来学习。

  2. 学习数据库基础知识和SQL语言。了解关系型数据库的基本概念和SQL语言的基本语法。可以阅读相关的书籍、教程或参加在线课程。

  3. 学习ADO.NET的基本概念和用法。了解如何连接数据库、执行SQL语句以及处理结果集。可以查阅官方文档、教程和示例代码。

  4. 掌握SqlConnection和SqlCommand类的用法。

-------------------

当你熟悉ADO.NET的基本概念后,可以开始学习SqlConnection和SqlCommand类的用法。

SqlConnection类用于建立与MSSQL数据库的连接,你需要提供连接字符串(connection string)来指定数据库的位置、认证方式和其他连接选项。可以使用Open()方法打开数据库连接,使用Close()方法关闭数据库连接。

SqlCommand类用于执行SQL语句或存储过程。你可以创建一个SqlCommand对象,指定要执行的SQL语句,并将其与SqlConnection对象关联。使用ExecuteNonQuery()方法执行非查询操作(如INSERT、UPDATE、DELETE),返回受影响的行数。使用ExecuteReader()方法执行查询操作,返回一个SqlDataReader对象,用于逐行读取查询结果集的数据。

除了SqlConnection和SqlCommand类,还有其他一些重要的类和概念需要学习:

  • SqlParameter类:用于构建参数化查询,避免SQL注入攻击,并能处理不同的数据类型。

  • SqlDataReader类:用于逐行读取查询结果集的数据。可以使用GetInt32、GetString、GetDateTime等方法按照列的类型获取数据。

  • 数据类型映射:了解C#和MSSQL之间的数据类型映射关系,确保在读取和写入数据时类型匹配。

  • 错误处理和异常处理:学习如何处理数据库操作中可能出现的错误和异常情况,使用try-catch语句来捕获异常并进行相应的处理。

  • 事务处理:了解事务的概念和作用,学习如何使用事务来确保数据库操作的一致性和完整性。可以使用SqlTransaction类来管理事务。

  • 连接池管理:了解数据库连接池的概念和作用,学习如何正确使用连接池以提高性能。可以使用Connection Pooling来自动管理连接池。

  • LINQ to SQL或Entity Framework:这些是.NET中更高级的ORM工具,它们提供了更方便和高级的方式来操作数据库,可以进一步简化数据库访问的代码。可以选择学习其中一个ORM工具来提高开发效率。

最重要的是,实践是学习的关键。尝试编写一些简单的C#程序,连接到MSSQL数据库,执行查询、插入、更新和删除操作。通过不断实践和调试,逐步加深对C#操作MSSQL的理解和熟练度。同时,阅读官方文档、参考书籍和在线教程也是很有帮助的,可以进一步扩展你的知识和技能。

-----------

当你掌握了基本的ADO.NET和C#操作MSSQL的知识后,你可以进一步深入学习以下内容:

  1. 数据库连接管理:了解如何有效地管理数据库连接,包括连接的打开和关闭、连接的池化和释放等。学习如何优化连接管理,以提高性能和资源利用率。

  2. 数据库事务:深入了解事务的概念、特性和用法。学习如何使用事务来确保多个数据库操作的原子性和一致性。掌握事务的隔离级别和并发控制的概念,以处理并发访问和数据一致性的问题。

  3. 存储过程和参数化查询:学习如何使用存储过程来封装复杂的数据库逻辑,并通过参数化查询来提高性能和安全性。了解存储过程的优势和用法,以及如何在C#中调用和执行存储过程。

  4. 数据库连接字符串管理:学习如何管理和配置数据库连接字符串,包括使用配置文件、加密连接字符串、动态生成连接字符串等。了解连接字符串中各个参数的含义和用法,以适应不同的数据库配置和环境。

  5. 数据库性能优化:了解如何优化数据库查询性能,包括使用索引、优化查询语句、避免重复查询、使用批量操作等技巧。学习如何使用数据库性能分析工具来识别和解决性能瓶颈。

  6. 异步数据库操作:学习如何使用异步编程模型(Async/Await)来执行数据库操作,以提高系统的响应性和吞吐量。了解异步操作的概念和原理,并掌握如何正确地使用异步方法来操作数据库。

  7. LINQ to SQL或Entity Framework进阶:如果你有兴趣进一步提高数据库访问的便捷性和灵活性,可以深入学习LINQ to SQL或Entity Framework。了解高级查询、关联查询、延迟加载和实体关系等概念,以及如何进行复杂数据操作和性能优化。

  8. 数据库安全性和权限管理:了解数据库的安全性和权限管理,包括用户、角色、权限的概念和用法。学习如何设置和管理数据库的访问权限,以及如何处理敏感数据和防止安全漏洞。

  9. 数据库迁移和版本管理:学习如何进行数据库迁移和版本管理,以方便在不同环境中部署和更新数据库结构。了解数据库迁移工具和技术,如Entity Framework Migrations、FluentMigrator等。

  10. 错误处理和日志记录:学习如何处理数据库操作中可能出现的错误和异常情况,并进行适当的错误处理和日志记录。掌握如何捕获和处理各种类型的数据库异常,并提供友好的错误信息和日志记录功能。

通过深入学习上述内容,你将能够更加全面地掌握C#操作MSSQL数据库的技能,并能够应对更复杂的数据库操作和需求。同时,参考官方文档、书籍和在线资源也是深入学习的重要途径,可以进一步扩展你的知识和技术广度。最重要的是,通过实践和项目经验来应用所学的知识,这将帮助你加深理解并提高实际应用的能力。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,如果要使用 MySQL 连接数据库,可以按照以下步骤进行: 1. 安装 MySQL 数据库,并创建一个数据库和表用于存储数据。 2. 在 C# 中使用 MySQL.Data.MySqlClient 命名空间连接数据库,可以使用 MySqlConnection、MySqlCommand、MySqlDataAdapter 等类。 3. 在窗口中添加控件,如 DataGridView、TextBox、Button 等,用于显示数据和进行增删改查操作。 4. 在窗口加载时,使用 MySqlDataAdapter 填充 DataGridView 控件。代码如下: ``` MySqlDataAdapter adapter = new MySqlDataAdapter("SELECT * FROM 表名", connectionString); DataTable table = new DataTable(); adapter.Fill(table); dataGridView1.DataSource = table; ``` 其中,connectionString 是连接字符串,可以使用如下方式创建: ``` string connectionString = "server=服务器地址;database=数据库名;uid=用户名;pwd=密码;"; ``` 5. 在增加按钮的 Click 事件中,获取用户输入的数据,使用 MySqlCommand 执行 INSERT INTO 语句插入数据。代码如下: ``` string sql = "INSERT INTO 表名 (字段1, 字段2) VALUES (@值1, @值2)"; MySqlCommand cmd = new MySqlCommand(sql, connection); cmd.Parameters.AddWithValue("@值1", textBox1.Text); cmd.Parameters.AddWithValue("@值2", textBox2.Text); cmd.ExecuteNonQuery(); ``` 6. 在修改按钮的 Click 事件中,获取用户输入的数据和选中的行,使用 MySqlCommand 执行 UPDATE 语句更新数据。代码如下: ``` string sql = "UPDATE 表名 SET 字段1=@值1, 字段2=@值2 WHERE ID=@ID"; MySqlCommand cmd = new MySqlCommand(sql, connection); cmd.Parameters.AddWithValue("@值1", textBox1.Text); cmd.Parameters.AddWithValue("@值2", textBox2.Text); cmd.Parameters.AddWithValue("@ID", dataGridView1.SelectedRows[0].Cells["ID"].Value); cmd.ExecuteNonQuery(); ``` 7. 在删除按钮的 Click 事件中,获取选中的行,使用 MySqlCommand 执行 DELETE FROM 语句删除数据。代码如下: ``` string sql = "DELETE FROM 表名 WHERE ID=@ID"; MySqlCommand cmd = new MySqlCommand(sql, connection); cmd.Parameters.AddWithValue("@ID", dataGridView1.SelectedRows[0].Cells["ID"].Value); cmd.ExecuteNonQuery(); ``` 以上就是一个简单的 C# ADO.NET 增删改查小管理窗口连接 MySQL 数据库的实现过程。同样需要注意异常处理、数据验证等问题。希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值