仓库管理系统C#+sql sever
时间: 2025-07-01 12:30:47 浏览: 14
### C# 和 SQL Server 开发仓库管理系统的概述
在开发基于 C# 的仓库管理系统时,通常会涉及前端界面设计、业务逻辑处理以及后端数据库交互。以下是一个简单的示例代码结构,展示如何通过 C# 连接 SQL Server 数据库并执行基本的增删改查操作。
#### 数据库连接类 `DBHelper`
以下是用于连接 SQL Server 并提供通用查询和更新方法的一个基础帮助类:
```csharp
using System;
using System.Data;
using System.Data.SqlClient;
public class DBHelper
{
private static string connectionString = "Server=YOUR_SERVER_NAME;Database=WarehouseManagementSystem;User Id=sa;Password=your_password;";
public static SqlConnection GetConnection()
{
SqlConnection connection = new SqlConnection(connectionString);
try
{
connection.Open();
}
catch (Exception ex)
{
throw new Exception($"无法打开数据库连接: {ex.Message}"[^3]);
}
return connection;
}
public static void Close(SqlConnection connection)
{
if (connection != null && connection.State == ConnectionState.Open)
{
connection.Close();
}
}
public static int ExecuteNonQuery(string sqlQuery)
{
using (SqlConnection connection = GetConnection())
{
SqlCommand command = new SqlCommand(sqlQuery, connection);
int rowsAffected = command.ExecuteNonQuery();
return rowsAffected;
}
}
public static DataTable ExecuteQuery(string sqlQuery)
{
using (SqlConnection connection = GetConnection())
{
SqlDataAdapter adapter = new SqlDataAdapter(sqlQuery, connection);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
return dataTable;
}
}
}
```
此代码片段展示了如何创建一个静态的帮助类来简化与 SQL Server 的交互过程[^4]。
---
#### 基础表结构设计
假设我们需要存储仓库中的商品信息,可以设计如下表格结构:
```sql
CREATE TABLE Products (
ProductID INT PRIMARY KEY IDENTITY(1,1),
Name NVARCHAR(100) NOT NULL,
Quantity INT DEFAULT 0,
Price DECIMAL(18,2) NOT NULL,
Description NVARCHAR(MAX),
CreatedAt DATETIME DEFAULT GETDATE(),
UpdatedAt DATETIME
);
CREATE TABLE Warehouses (
WarehouseID INT PRIMARY KEY IDENTITY(1,1),
Location NVARCHAR(255) NOT NULL UNIQUE,
Capacity INT NOT NULL CHECK(Capacity >= 0),
IsActive BIT DEFAULT 1
);
CREATE TABLE Inventory (
InventoryID INT PRIMARY KEY IDENTITY(1,1),
ProductID INT FOREIGN KEY REFERENCES Products(ProductID),
WarehouseID INT FOREIGN KEY REFERENCES Warehouses(WarehouseID),
StockQuantity INT DEFAULT 0 CHECK(StockQuantity >= 0),
LastUpdated DATETIME DEFAULT GETDATE()
);
```
这些表分别表示产品信息、仓库位置及其容量,以及库存记录[^5]。
---
#### 示例功能:新增产品到指定仓库
下面是一段演示如何向特定仓库添加产品的代码:
```csharp
public class ProductService
{
public bool AddProductToWarehouse(int productId, int warehouseId, int quantityToAdd)
{
string checkInventorySql = @"
IF EXISTS(SELECT * FROM Inventory WHERE ProductID=@ProductId AND WarehouseID=@WarehouseID)
UPDATE Inventory SET StockQuantity=StockQuantity+@QuantityAdded, LastUpdated=GETDATE()
WHERE ProductID=@ProductId AND WarehouseID=@WarehouseID
ELSE
INSERT INTO Inventory(ProductID, WarehouseID, StockQuantity) VALUES(@ProductId, @WarehouseID, @QuantityAdded)";
using (SqlConnection connection = DBHelper.GetConnection())
{
SqlCommand command = new SqlCommand(checkInventorySql, connection);
command.Parameters.AddWithValue("@ProductId", productId);
command.Parameters.AddWithValue("@WarehouseID", warehouseId);
command.Parameters.AddWithValue("@QuantityAdded", quantityToAdd);
int affectedRows = command.ExecuteNonQuery();
return affectedRows > 0 ? true : false;
}
}
}
```
该函数实现了检查是否存在对应的产品-仓库组合,并相应地增加数量或插入新条目[^6]。
---
#### 用户界面建议
对于用户界面部分,可以选择 Windows Forms 或 WPF 来构建图形化应用。例如,在按钮点击事件中调用上述服务层的方法即可完成数据录入工作。
---
阅读全文
相关推荐

















