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
对象。
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
Q1: 如果连接数据库时出现“无法打开连接”的错误,可能是什么原因?
A1: 可能的原因包括但不限于以下几点:
连接字符串不正确,例如服务器地址、数据库名称、用户名或密码错误。
SQL Server服务未启动,可以在SQL Server配置管理器中检查服务状态,并启动相应的服务。
网络问题导致无法连接到数据库服务器,可以检查网络连接是否正常,或者尝试使用其他网络环境进行连接。
防火墙或安全软件阻止了连接请求,可以检查防火墙设置或暂时关闭安全软件进行测试。
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}"); }