当前位置:首页 > 行业动态 > 正文

c# 数据库 demo

问题:,请用C#编写一个简单的数据库操作示例,包括连接数据库、插入数据和查询数据。 答案:,“ csharp,using System;,using System.Data.SqlClient;class Program,{, static void Main(), {, string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";, using (SqlConnection connection = new SqlConnection(connectionString)), {, connection.Open();, Console.WriteLine("Connection Opened"); string insertQuery = "INSERT INTO TableName (Column1, Column2) VALUES (@Value1, @Value2)";, using (SqlCommand command = new SqlCommand(insertQuery, connection)), {, command.Parameters.AddWithValue("@Value1", "SampleValue1");, command.Parameters.AddWithValue("@Value2", "SampleValue2");, command.ExecuteNonQuery();, Console.WriteLine("Data Inserted");, } string selectQuery = "SELECT * FROM TableName";, using (SqlCommand command = new SqlCommand(selectQuery, connection)), {, using (SqlDataReader reader = command.ExecuteReader()), {, while (reader.Read()), {, Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));, }, }, }, }, },},

C# 数据库操作示例

在C#中进行数据库操作通常涉及到使用ADO.NET、Entity Framework或其他ORM(对象关系映射)工具,以下是一个简单的使用ADO.NET连接到SQL Server数据库并进行基本操作的示例。

前提条件

1、确保已经安装了.NET SDK和SQL Server数据库。

2、创建一个SQL Server数据库,例如DemoDB,并在其中创建一个表,例如Users,包含以下字段:Id(int,主键),Name(nvarchar(50)),Age(int)。

示例代码

引入命名空间

using System;
using System.Data;
using System.Data.SqlClient;

建立数据库连接

需要创建一个数据库连接字符串,并使用该字符串创建一个SqlConnection对象。

c# 数据库 demo

string connectionString = "Server=localhost;Database=DemoDB;User Id=sa;Password=your_password;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    // 在这里执行数据库操作
}

请将your_password替换为实际的SQL Server密码。

执行查询操作

查询所有用户

using (SqlCommand command = new SqlCommand("SELECT * FROM Users", connection))
{
    connection.Open();
    SqlDataReader reader = command.ExecuteReader();
    while (reader.Read())
    {
        Console.WriteLine($"Id: {reader["Id"]}, Name: {reader["Name"]}, Age: {reader["Age"]}");
    }
    reader.Close();
}

插入新用户

using (SqlCommand command = new SqlCommand("INSERT INTO Users (Name, Age) VALUES (@Name, @Age)", connection))
{
    command.Parameters.AddWithValue("@Name", "John Doe");
    command.Parameters.AddWithValue("@Age", 30);
    connection.Open();
    int rowsAffected = command.ExecuteNonQuery();
    Console.WriteLine($"Rows affected: {rowsAffected}");
}

更新用户信息

using (SqlCommand command = new SqlCommand("UPDATE Users SET Name = @Name, Age = @Age WHERE Id = @Id", connection))
{
    command.Parameters.AddWithValue("@Id", 1);
    command.Parameters.AddWithValue("@Name", "Jane Doe");
    command.Parameters.AddWithValue("@Age", 28);
    connection.Open();
    int rowsAffected = command.ExecuteNonQuery();
    Console.WriteLine($"Rows affected: {rowsAffected}");
}

删除用户

using (SqlCommand command = new SqlCommand("DELETE FROM Users WHERE Id = @Id", connection))
{
    command.Parameters.AddWithValue("@Id", 1);
    connection.Open();
    int rowsAffected = command.ExecuteNonQuery();
    Console.WriteLine($"Rows affected: {rowsAffected}");
}

完整示例代码

以下是一个完整的示例程序,展示了如何连接到数据库并执行上述所有操作:

using System;
using System.Data;
using System.Data.SqlClient;
class Program
{
    static void Main()
    {
        string connectionString = "Server=localhost;Database=DemoDB;User Id=sa;Password=your_password;";
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            // 查询所有用户
            using (SqlCommand command = new SqlCommand("SELECT * FROM Users", connection))
            {
                connection.Open();
                SqlDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                    Console.WriteLine($"Id: {reader["Id"]}, Name: {reader["Name"]}, Age: {reader["Age"]}");
                }
                reader.Close();
            }
            // 插入新用户
            using (SqlCommand command = new SqlCommand("INSERT INTO Users (Name, Age) VALUES (@Name, @Age)", connection))
            {
                command.Parameters.AddWithValue("@Name", "John Doe");
                command.Parameters.AddWithValue("@Age", 30);
                connection.Open();
                int rowsAffected = command.ExecuteNonQuery();
                Console.WriteLine($"Rows affected: {rowsAffected}");
            }
            // 更新用户信息
            using (SqlCommand command = new SqlCommand("UPDATE Users SET Name = @Name, Age = @Age WHERE Id = @Id", connection))
            {
                command.Parameters.AddWithValue("@Id", 1);
                command.Parameters.AddWithValue("@Name", "Jane Doe");
                command.Parameters.AddWithValue("@Age", 28);
                connection.Open();
                int rowsAffected = command.ExecuteNonQuery();
                Console.WriteLine($"Rows affected: {rowsAffected}");
            }
            // 删除用户
            using (SqlCommand command = new SqlCommand("DELETE FROM Users WHERE Id = @Id", connection))
            {
                command.Parameters.AddWithValue("@Id", 1);
                connection.Open();
                int rowsAffected = command.ExecuteNonQuery();
                Console.WriteLine($"Rows affected: {rowsAffected}");
            }
        }
    }
}

代码中的数据库连接字符串、表名和字段名需要根据实际情况进行调整,为了简化示例,没有包含错误处理逻辑,在实际应用中,建议添加适当的异常处理机制,以确保程序的稳定性和可靠性。

FAQs

c# 数据库 demo

Q1: 如果连接数据库时出现“无法打开连接”的错误,可能是什么原因?

A1: 可能的原因包括但不限于以下几点:

连接字符串不正确,例如服务器地址、数据库名称、用户名或密码错误。

SQL Server服务未启动,可以在SQL Server配置管理器中检查服务状态,并启动相应的服务。

网络问题导致无法连接到数据库服务器,可以检查网络连接是否正常,或者尝试使用其他网络环境进行连接。

c# 数据库 demo

防火墙或安全软件阻止了连接请求,可以检查防火墙设置或暂时关闭安全软件进行测试。

Q2: 如何在C#中使用参数化查询来防止SQL注入攻击?

A2: 在C#中使用参数化查询是防止SQL注入攻击的有效方法,通过使用参数化查询,可以将用户输入的值作为参数传递给SQL命令,而不是直接拼接到SQL语句中,这样可以避免反面用户通过输入特殊字符来改动SQL语句的结构,在上述示例中,我们已经使用了参数化查询来插入、更新和删除数据,具体做法是使用SqlParameter对象来定义参数,并将参数添加到SqlCommand对象的Parameters集合中。

using (SqlCommand command = new SqlCommand("INSERT INTO Users (Name, Age) VALUES (@Name, @Age)", connection))
{
    command.Parameters.AddWithValue("@Name", "John Doe"); // 这里的"John Doe"是用户输入的值,但不会直接拼接到SQL语句中,而是作为参数传递
    command.Parameters.AddWithValue("@Age", 30);
    connection.Open();
    int rowsAffected = command.ExecuteNonQuery();
    Console.WriteLine($"Rows affected: {rowsAffected}");
}