德国世界杯_2012年世界杯 - fyycdq.com

德国世界杯_2012年世界杯 - fyycdq.com

C#连接SQL Server数据库(完整代码在最后)

c#连接SQL Server数据库(完整代码在最后)

安装System.Data.SqlClient包

using System.Data.SqlClient;

建立连接

string connectionString = "server=localhost; database=test; uid=sa; pwd=961121";

SqlConnection connection = new SqlConnection(connectionString);

connection.Open();

server=localhost:指定服务器名称为 localhost,表示数据库服务器位于本地计算机上。localhost 是一个特殊的名称,用于指代本地主机。

database=test:指定要连接的数据库名称为 test。这意味着连接成功后,将在 test 数据库上执行数据库操作。

uid=sa:指定用户身份验证使用的用户名为 sa。sa 是 SQL Server 中的系统管理员账户。

pwd=961121:指定用户身份验证使用的密码为 961121。

添加数据

// 插入数据

static void InsertData(SqlConnection connection, string tableName, string username, string password)

{

string insertQuery = $"INSERT INTO [{tableName}] (username, password) VALUES (@Username, @Password)";

using (SqlCommand command = new SqlCommand(insertQuery, connection))

{

command.Parameters.AddWithValue("@Username", username);

command.Parameters.AddWithValue("@Password", password);

int rowsAffected = command.ExecuteNonQuery();

Console.WriteLine($"{rowsAffected} 行受影响。");

}

}

InsertData 方法用于向指定的表中插入一条新的记录。以下是该方法的详细介绍:

static void InsertData(SqlConnection connection, string tableName, string username, string password)

SqlConnection connection:表示已建立的到数据库的连接。

string tableName:表示要插入数据的目标表的名称。

string username:表示要插入的用户名。

string password:表示要插入的密码。

在方法内部,首先构建了一个 SQL 插入语句,语句的格式为:

INSERT INTO [表名] (列1, 列2, 列3, ...) VALUES (@参数1, @参数2, @参数3, ...)

在这里,[表名] 是我们传递给方法的 tableName 参数;(列1, 列2, 列3, ...) 是目标表的列名;(@参数1, @参数2, @参数3, ...) 是参数化查询的占位符。参数化查询可以防止 SQL 注入攻击,并且可以处理字符串中的特殊字符,例如单引号。

接下来,创建一个 SqlCommand 对象,它使用构建好的插入语句和数据库连接。

using (SqlCommand command = new SqlCommand(insertQuery, connection))

然后,使用 command.Parameters.AddWithValue() 方法添加参数并设置它们的值。在这里,我们将 username 和 password 参数绑定到 SQL 查询中的 @Username 和 @Password 参数。

command.Parameters.AddWithValue("@Username", username);

command.Parameters.AddWithValue("@Password", password);

接着,使用 ExecuteNonQuery() 方法执行 SQL 查询,并返回受影响的行数。由于这是一个插入操作,所以我们通常希望看到受影响的行数为 1。

int rowsAffected = command.ExecuteNonQuery();

最后,将受影响的行数输出到控制台,以指示插入操作的结果。

Console.WriteLine($"{rowsAffected} 行受影响。");

这样,InsertData 方法就完成了向指定表中插入新记录的操作。

查询数据

// 查询数据

static void RetrieveData(SqlConnection connection, string tableName)

{

string selectQuery = $"SELECT * FROM [{tableName}]";

using (SqlCommand command = new SqlCommand(selectQuery, connection))

using (SqlDataReader reader = command.ExecuteReader())

{

while (reader.Read())

{

Console.WriteLine($"username: {reader["username"]}, password: {reader["password"]}");

}

}

}

RetrieveData 方法用于从指定表中检索数据,并将结果输出到控制台。以下是该方法的详细介绍:

static void RetrieveData(SqlConnection connection, string tableName)

SqlConnection connection:表示已建立的到数据库的连接。

string tableName:表示要从中检索数据的目标表的名称。

在方法内部,首先构建了一个 SQL 查询语句,用于检索指定表中的所有列和行。查询语句的格式为:

SELECT * FROM [表名]

在这里,[表名] 是我们传递给方法的 tableName 参数。

接下来,创建一个 SqlCommand 对象,它使用构建好的查询语句和数据库连接。

using (SqlCommand command = new SqlCommand(selectQuery, connection))

然后,使用 command.ExecuteReader() 方法执行 SQL 查询,并返回一个 SqlDataReader 对象,该对象可以逐行读取查询结果。

using (SqlDataReader reader = command.ExecuteReader())

在 while 循环中,通过调用 reader.Read() 方法,逐行读取查询结果,直到没有更多的行可读。在循环内部,通过 reader["列名"] 语法,可以通过列名访问每一行中的字段值。

while (reader.Read())

{

Console.WriteLine($"username: {reader["username"]}, password: {reader["password"]}");

}

最后,完成数据检索操作后,释放 SqlDataReader 和 SqlCommand 对象的资源。这是通过 using 块来实现的,在块结束时会自动调用 Dispose() 方法释放资源。

通过以上步骤,RetrieveData 方法就完成了从指定表中检索数据并输出到控制台的操作。

更新数据

// 更新数据

static void UpdateData(SqlConnection connection, string tableName, string username, string newPassword)

{

string updateQuery = $"UPDATE [{tableName}] SET password = @NewPassword WHERE username = @Username";

using (SqlCommand command = new SqlCommand(updateQuery, connection))

{

command.Parameters.AddWithValue("@NewPassword", newPassword);

command.Parameters.AddWithValue("@Username", username);

int rowsAffected = command.ExecuteNonQuery();

Console.WriteLine($"{rowsAffected} 行受影响。");

}

}

UpdateData 方法用于更新指定表中的数据。以下是该方法的详细介绍:

static void UpdateData(SqlConnection connection, string tableName, string username, string newPassword)

SqlConnection connection:表示已建立的到数据库的连接。

string tableName:表示要更新数据的目标表的名称。

string username:表示要更新密码的用户的用户名。

string newPassword:表示要更新的新密码。

在方法内部,首先构建了一个 SQL 更新语句,语句的格式为:

UPDATE [表名] SET 列名 = @参数 WHERE 条件列名 = @条件参数

在这里,[表名] 是我们传递给方法的 tableName 参数;列名 是要更新的列名,这里是 password;@参数 是要更新的新密码,由方法的 newPassword 参数提供;条件列名 是更新数据所依据的条件列,这里是 username;@条件参数 是条件列所对应的值,由方法的 username 参数提供。

接下来,创建一个 SqlCommand 对象,它使用构建好的更新语句和数据库连接。

using (SqlCommand command = new SqlCommand(updateQuery, connection))

然后,使用 command.Parameters.AddWithValue() 方法添加参数并设置它们的值。在这里,我们将 newPassword 和 username 参数绑定到 SQL 查询中的 @NewPassword 和 @Username 参数。

command.Parameters.AddWithValue("@NewPassword", newPassword);

command.Parameters.AddWithValue("@Username", username);

接着,使用 ExecuteNonQuery() 方法执行 SQL 更新查询,并返回受影响的行数。由于这是一个更新操作,所以我们通常希望看到受影响的行数为 1。

int rowsAffected = command.ExecuteNonQuery();

最后,将受影响的行数输出到控制台,以指示更新操作的结果。

Console.WriteLine($"{rowsAffected} 行受影响。");

这样,UpdateData 方法就完成了更新指定表中数据的操作。

删除数据

// 删除数据

static void DeleteData(SqlConnection connection, string tableName, string username)

{

string deleteQuery = $"DELETE FROM [{tableName}] WHERE username = @Username";

using (SqlCommand command = new SqlCommand(deleteQuery, connection))

{

command.Parameters.AddWithValue("@Username", username);

int rowsAffected = command.ExecuteNonQuery();

Console.WriteLine($"{rowsAffected} 行受影响。");

}

}

DeleteData 方法用于从指定表中删除数据。以下是该方法的详细介绍:

static void DeleteData(SqlConnection connection, string tableName, string username)

SqlConnection connection:表示已建立的到数据库的连接。

string tableName:表示要删除数据的目标表的名称。

string username:表示要删除数据的用户名。

在方法内部,首先构建了一个 SQL 删除语句,语句的格式为:

DELETE FROM [表名] WHERE 条件列名 = @条件参数

在这里,[表名] 是我们传递给方法的 tableName 参数;条件列名 是删除数据所依据的条件列,这里是 username;@条件参数 是条件列所对应的值,由方法的 username 参数提供。

接下来,创建一个 SqlCommand 对象,它使用构建好的删除语句和数据库连接。

using (SqlCommand command = new SqlCommand(deleteQuery, connection))

然后,使用 command.Parameters.AddWithValue() 方法添加参数并设置它们的值。在这里,我们将 username 参数绑定到 SQL 查询中的 @Username 参数。

command.Parameters.AddWithValue("@Username", username);

接着,使用 ExecuteNonQuery() 方法执行 SQL 删除查询,并返回受影响的行数。由于这是一个删除操作,所以我们通常希望看到受影响的行数为 1。

int rowsAffected = command.ExecuteNonQuery();

最后,将受影响的行数输出到控制台,以指示删除操作的结果。

Console.WriteLine($"{rowsAffected} 行受影响。");

这样,DeleteData 方法就完成了从指定表中删除数据的操作。

完整代码

using System;

using System.Data.SqlClient;

class Program

{

static void Main(string[] args)

{

string connectionString = "server=localhost; database=test; uid=sa; pwd=961121";

// 建立连接

using (SqlConnection connection = new SqlConnection(connectionString))

{

try

{

// 打开连接

connection.Open();

// 添加数据

Console.WriteLine("1. 插入数据:");

InsertData(connection, "user", "John", "123456");

// 查询数据

Console.WriteLine("\n2. 查询数据:");

RetrieveData(connection, "user");

// 更新数据

Console.WriteLine("\n3. 更新数据:");

UpdateData(connection, "user", "John", "456789");

// 查询更新后的数据

Console.WriteLine("\n4. 查询更新后的数据:");

RetrieveData(connection, "user");

// 删除数据

Console.WriteLine("\n5. 删除数据:");

DeleteData(connection, "user", "John");

// 查询删除后的数据

Console.WriteLine("\n6. 查询删除后的数据:");

RetrieveData(connection, "user");

}

catch (SqlException ex)

{

Console.WriteLine($"SQL Error: {ex.Message}");

}

finally

{

connection.Close();

}

}

}

// 插入数据

static void InsertData(SqlConnection connection, string tableName, string username, string password)

{

string insertQuery = $"INSERT INTO [{tableName}] (username, password) VALUES (@Username, @Password)";

using (SqlCommand command = new SqlCommand(insertQuery, connection))

{

command.Parameters.AddWithValue("@Username", username);

command.Parameters.AddWithValue("@Password", password);

int rowsAffected = command.ExecuteNonQuery();

Console.WriteLine($"{rowsAffected} 行受影响。");

}

}

// 查询数据

static void RetrieveData(SqlConnection connection, string tableName)

{

string selectQuery = $"SELECT * FROM [{tableName}]";

using (SqlCommand command = new SqlCommand(selectQuery, connection))

using (SqlDataReader reader = command.ExecuteReader())

{

while (reader.Read())

{

Console.WriteLine($"username: {reader["username"]}, password: {reader["password"]}");

}

}

}

// 更新数据

static void UpdateData(SqlConnection connection, string tableName, string username, string newPassword)

{

string updateQuery = $"UPDATE [{tableName}] SET password = @NewPassword WHERE username = @Username";

using (SqlCommand command = new SqlCommand(updateQuery, connection))

{

command.Parameters.AddWithValue("@NewPassword", newPassword);

command.Parameters.AddWithValue("@Username", username);

int rowsAffected = command.ExecuteNonQuery();

Console.WriteLine($"{rowsAffected} 行受影响。");

}

}

// 删除数据

static void DeleteData(SqlConnection connection, string tableName, string username)

{

string deleteQuery = $"DELETE FROM [{tableName}] WHERE username = @Username";

using (SqlCommand command = new SqlCommand(deleteQuery, connection))

{

command.Parameters.AddWithValue("@Username", username);

int rowsAffected = command.ExecuteNonQuery();

Console.WriteLine($"{rowsAffected} 行受影响。");

}

}

}