19.5 搭建系统数据库
从本节开始搭建系统数据库,将上传后的数据存储在专用数据库中。这样,不但可以方便对数据进行管理,而且可以预留扩展接口,方便日后对系统进行升级处理。
19.5.1 数据库设计
本实例采用SQL Server 2005数据库,命名为“tuwen”,由系统上传数据信息表“File”构成。File的设计结构如表19-1所示。
表19-1 系统上传数据信息表“File”构成
字 段 名 称 |
数 据 类 型 |
是 否 主 键 |
默 认 值 |
功 能 描 述 |
---|---|---|---|---|
ID |
int |
是 |
递增1 |
编号 |
Title |
varchar(200) |
否 |
Null |
用户名 |
Url |
varchar(255) |
否 |
Null |
密码 |
Type |
varchar(50) |
否 |
Null |
标识状态 |
Size |
int |
否 |
Null |
大小 |
CreateDate |
datetime |
否 |
Null |
上传时间 |
19.5.2 数据库访问层设计
本实现应用程序的数据库访问层由文件ssssss.cs实现,其主要功能是在ASPNETAJAXWeb. AjaxFileImage空间中创建FileImage类,并实现对上传文件在数据库中的处理。文件ssssss.cs的实现过程如下。
(1)定义FileImage类,主要实现代码如下。
using System;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
namespace ASPNETAJAXWeb.AjaxFileImage
{
public class FileImage
{
public FileImage()
{
……
}
(2)获取上传文件信息,即获取系统数据库中已上传的文件信息。该功能由方法GetFiles()实现,实现代码如下。
public DataSet GetFiles()
{ //获取连接字符串
string connectionString=ConfigurationManager.ConnectionStrings ["SQLCONNECTIONSTRING"]. Connection String;
//创建连接
SqlConnection con = new SqlConnection(connectionString);
//创建SQL语句
string cmdText = "SELECT * FROM [File]";
SqlDataAdapter da = new SqlDataAdapter(cmdText,con);
//定义DataSet
DataSet ds = new DataSet();
try
{
con.Open();
//填充数据
da.Fill(ds,"DataTable");
}
catch(Exception ex)
{ //抛出异常
throw new Exception(ex.Message,ex);
}
finally
{ //关闭连接
con.Close();
}
return ds;
}
(3)添加上传文件信息
添加上传文件信息即将新上传的文件添加到系统数据库中。该功能是由方法AddFile(string title,string url,string type,int size)实现的,主要实现代码如下。
public int AddFile(string title,string url,string type,int size)
{ //获取连接字符串
string connectionString=ConfigurationManager.ConnectionStrings["SQLCONNECTIONSTRING"] onnectionString;
SqlConnection con = new SqlConnection(connectionString);
//创建SQL语句
string cmdText = "INSERT INTO [File](Title,Url,[Type],[Size],CreateDate)VALUES(@Title,@Url,@Type,@ Size,
GETDATE())";
//创建SqlCommand
SqlCommand cmd = new SqlCommand(cmdText,con);
//创建参数并赋值
cmd.Parameters.Add("@Title",SqlDbType.VarChar,200);
cmd.Parameters.Add("@Url",SqlDbType.VarChar,255);
cmd.Parameters.Add("@Type",SqlDbType.VarChar,50);
cmd.Parameters.Add("@Size",SqlDbType.Int,4);
cmd.Parameters[0].Value = title;
cmd.Parameters[1].Value = url;
cmd.Parameters[2].Value = type;
cmd.Parameters[3].Value = size;
int result = -1;
try
{
con.Open();
result = cmd.ExecuteNonQuery();
}
catch(Exception ex)
{ //抛出异常
throw new Exception(ex.Message,ex);
}
finally
{ //关闭连接
con.Close();
}
return result;
}
(4)删除上传文件信息
删除上传文件信息即将系统中已上传的文件从系统数据库中删除。该功能是由方法DeleteFile(int fileID)实现的,主要实现代码如下。
public int DeleteFile(int fileID)
{
string connectionString = ConfigurationManager.ConnectionStrings["SQLCONNECTIONSTR ING"].Connection String;
SqlConnection con = new SqlConnection(connectionString);
//创建SQL语句
string cmdText = "DELETE [File] WHERE ID = @ID";
SqlCommand cmd = new SqlCommand(cmdText,con);
//创建参数并赋值
cmd.Parameters.Add("@ID",SqlDbType.Int,4);
cmd.Parameters[0].Value = fileID;
int result = −1;
try
{
con.Open();
//操作数据
result = cmd.ExecuteNonQuery();
}
catch(Exception ex)
{ //抛出异常
throw new Exception(ex.Message,ex);
}
finally
{ //关闭连接
con.Close();
}
return result;
}
}
}
由此可见,数据库工作看似比较简单,其实很有技术含量。合理的数据库设计是一个项目是否高效的基础。在此阶段,编程人员需谨慎,考虑周全,因为数据库表设计得是否合理,直接关系到后期编码的方便性。