要操作的代码是下面一段: protected void ButtonOK_Click(object sender, EventArgs e)
{
//构造book信息哈希表
Hashtable ht=new Hashtable();
ht.Add("bookname",TextBox1.Text.Trim());
ht.Add("typeID",DropDownListtype.SelectedValue);
ht.Add("price",TextBox3.Text.Trim());
ht.Add("publisher",TextBox2.Text.Trim());
ht.Add("INTime",TextBox5.Text.Trim());
ht.Add("nowprice",TextBox4.Text.Trim());
ht.Add("Author",TextBox7.Text.Trim());
ht.Add("introduec",TextBox6.Text.Trim());
//图片名,以当前时间为文件名,确保文件名没有重复
string uploadName=InputPictureFile.Value.Trim();
string pictureName="";
if(uploadName!="")
{
int idx=uploadName.LastIndexOf(".");
string suffix=uploadName.Substring(idx);//文件后缀
//Ticks属性的值为自 0001 年 1 月 1 日午夜 12:00 以来所经过时间以 100 毫微秒为间隔表示时的数字。
pictureName=System.DateTime.Now.Ticks.ToString()+suffix;
ht.Add("picture",pictureName);
} ht.Add("SaleCount",1);
//添加图书,如果数据类型不正确,给出提示.
ArrayList WarningMessageList=new ArrayList();
LabelWarningMessage.Text="";
if (BookHelper.Add(ht, ref WarningMessageList) == false)
{
LabelWarningMessage.Text = "<font color=red>";
foreach (string item in WarningMessageList)
{
LabelWarningMessage.Text += item + "<br>";
}
LabelWarningMessage.Text += "</font>";
} //上传图片到目录"\BookPics\"中
else
{
if (uploadName != "")
{
string path = Server.MapPath(".\\BookPics\\");
InputPictureFile.PostedFile.SaveAs(path + pictureName);
}
Response.Redirect("shouye.aspx");
}
}
{
//构造book信息哈希表
Hashtable ht=new Hashtable();
ht.Add("bookname",TextBox1.Text.Trim());
ht.Add("typeID",DropDownListtype.SelectedValue);
ht.Add("price",TextBox3.Text.Trim());
ht.Add("publisher",TextBox2.Text.Trim());
ht.Add("INTime",TextBox5.Text.Trim());
ht.Add("nowprice",TextBox4.Text.Trim());
ht.Add("Author",TextBox7.Text.Trim());
ht.Add("introduec",TextBox6.Text.Trim());
//图片名,以当前时间为文件名,确保文件名没有重复
string uploadName=InputPictureFile.Value.Trim();
string pictureName="";
if(uploadName!="")
{
int idx=uploadName.LastIndexOf(".");
string suffix=uploadName.Substring(idx);//文件后缀
//Ticks属性的值为自 0001 年 1 月 1 日午夜 12:00 以来所经过时间以 100 毫微秒为间隔表示时的数字。
pictureName=System.DateTime.Now.Ticks.ToString()+suffix;
ht.Add("picture",pictureName);
} ht.Add("SaleCount",1);
//添加图书,如果数据类型不正确,给出提示.
ArrayList WarningMessageList=new ArrayList();
LabelWarningMessage.Text="";
if (BookHelper.Add(ht, ref WarningMessageList) == false)
{
LabelWarningMessage.Text = "<font color=red>";
foreach (string item in WarningMessageList)
{
LabelWarningMessage.Text += item + "<br>";
}
LabelWarningMessage.Text += "</font>";
} //上传图片到目录"\BookPics\"中
else
{
if (uploadName != "")
{
string path = Server.MapPath(".\\BookPics\\");
InputPictureFile.PostedFile.SaveAs(path + pictureName);
}
Response.Redirect("shouye.aspx");
}
}
using System;
using System.Collections;using Bookshop.LogicLayer;
using Bookshop.DataAccessHelper;namespace Bookshop.LogicHelper
{
public class BookHelper
{
/// <summary>
/// Book类的接口帮助类,完成Add方法的数据检查
/// </summary>
/// <param name="bookInfo">Add方法的图书哈希表信息</param>
/// <param name="WarningMessageList">返回的警告信息</param>
/// <returns>如果数据检查正确:返回true;否则:返回false</returns>
public static bool Add(Hashtable bookInfo, ref ArrayList WarningMessageList)
{
bool result = true;
WarningMessageList.Clear();
Hashtable quoetedBookInfo = new Hashtable(); //值带有单引号的图书信息哈希表 foreach (DictionaryEntry item in bookInfo)
{
switch (item.Key.ToString())
{
case "bookID": //图书ID
{
if (item.Value.ToString() == "")
{
result = false;
WarningMessageList.Add("警告:图书ID不能为空!");
}
else if (!ValidateUtility.IsString(item.Value)) //检查是否为字符串类型
{
result = false;
WarningMessageList.Add("警告:图书名称数据类型错误!");
}
else
quoetedBookInfo.Add("bookID", SqlStringConstructor.GetQuotedString(item.Value.ToString()));
break;
}
.... }
case "SaleCount":
{
if (!ValidateUtility.IsString(item.Value)) //检查是否为整数类型
{
result = false;
WarningMessageList.Add("警告:销售量数据类型错误!");
}
else
quoetedBookInfo.Add("SaleCount", item.Value.ToString());
break;
}
}//switch
}//while if (result)
{
Book book = new Book();
book.Add(quoetedBookInfo);
}
return result;
}
}
}
using System.ComponentModel;
using System.Collections;
using System.Diagnostics;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;using Bookshop.DataAccessHelper;namespace Bookshop.DataAccessLayer
{
/// <summary>
/// 类,用于数据访问的类。
/// </summary>
public class Database : IDisposable
{
/// <summary>
/// 保护变量,数据库连接。
/// </summary>
protected SqlConnection Connection; /// <summary>
/// 保护变量,数据库连接串。
/// </summary>
protected String ConnectionString;
/// <summary>
/// 构造函数。
/// </summary>
/// <param name="DatabaseConnectionString">数据库连接串</param>
public Database()
{
ConnectionString =ConfigurationManager.AppSettings["DBConnectionString"];
} /// <summary>
/// 析构函数,释放非托管资源
/// </summary>
~Database()
{
try
{
if (Connection != null)
Connection.Close();
}
catch{}
try
{
Dispose();
}
catch{}
} /// <summary>
/// 保护方法,打开数据库连接。
/// </summary>
protected void Open()
{
if (Connection == null)
{
Connection = new SqlConnection(ConnectionString);
}
if (Connection.State.Equals(ConnectionState.Closed))
{
Connection.Open();
}
} /// <summary>
/// 公有方法,关闭数据库连接。
/// </summary>
public void Close()
{
if (Connection != null)
Connection.Close();
} /// <summary>
/// 公有方法,释放资源。
/// </summary>
public void Dispose()
{
// 确保连接被关闭
if (Connection != null)
{
Connection.Dispose();
Connection = null;
}
} /// <summary>
/// 公有方法,获取数据,返回一个SqlDataReader (调用后主意调用SqlDataReader.Close())。
/// </summary>
/// <param name="SqlString">Sql语句</param>
/// <returns>SqlDataReader</returns>
public SqlDataReader GetDataReader(String SqlString)
{
Open();
SqlCommand cmd = new SqlCommand(SqlString,Connection);
return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
} /// <summary>
/// 公有方法,获取数据,返回一个SqlDataReader (调用后主意调用SqlDataReader.Close()、Database.Close())。
/// </summary>
/// <param name="SqlString">Sql语句</param>
/// <returns>SqlDataReader</returns>
public SqlDataReader GetSaDataReader(String SqlString)
{
Open();
SqlCommand cmd = new SqlCommand(SqlString,Connection);
return cmd.ExecuteReader(System.Data.CommandBehavior.SequentialAccess);
} /// <summary>
/// 公有方法,获取数据,返回一个DataSet。
/// </summary>
/// <param name="SqlString">Sql语句</param>
/// <returns>DataSet</returns>
public DataSet GetDataSet(String SqlString)
{
Open();
SqlDataAdapter adapter = new SqlDataAdapter(SqlString,Connection);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
Close();
return dataset;
} /// <summary>
/// 公有方法,获取数据,返回一个DataTable。
/// </summary>
/// <param name="SqlString">Sql语句</param>
/// <returns>DataTable</returns>
public DataTable GetDataTable(String SqlString)
{
DataSet dataset = GetDataSet(SqlString);
dataset.CaseSensitive = false;
return dataset.Tables[0];
} /// <summary>
/// 公有方法,获取数据,返回一个DataRow。
/// </summary>
/// <param name="SqlString">Sql语句</param>
/// <returns>DataRow</returns>
public DataRow GetDataRow(String SqlString)
{
DataSet dataset = GetDataSet(SqlString);
dataset.CaseSensitive = false;
if (dataset.Tables[0].Rows.Count>0)
{
return dataset.Tables[0].Rows[0];
}
else
{
return null;
}
} /// <summary>
/// 公有方法,执行Sql语句。
/// </summary>
/// <param name="SqlString">Sql语句</param>
/// <returns>对Update、Insert、Delete为影响到的行数,其他情况为-1</returns>
public int ExecuteSQL(String SqlString)
{
int count = -1;
Open();
try
{
SqlCommand cmd = new SqlCommand(SqlString,Connection);
count = cmd.ExecuteNonQuery();
}
catch
{
count = -1;
}
finally
{
Close();
}
return count;
} /// <summary>
/// 公有方法,执行一组Sql语句。
/// </summary>
/// <param name="SqlStrings">Sql语句组</param>
/// <returns>是否成功</returns>
public bool ExecuteSQL(String[] SqlStrings)
{
bool success = true;
Open();
//Connection = new SqlConnection(ConfigurationManager.AppSettings["DBConnectionString"]);
SqlCommand cmd = new SqlCommand();
SqlTransaction trans = Connection.BeginTransaction();
cmd.Connection = Connection;
cmd.Transaction = trans;
try
{
foreach (String str in SqlStrings)
{
cmd.CommandText = str;
cmd.ExecuteNonQuery();
}
trans.Commit();
}
catch
{
success = false;
trans.Rollback();
}
finally
{
Connection.Close();
}
return success;
} /// <summary>
/// 公有方法,执行一组Sql语句。
/// </summary>
/// <param name="SqlStrings">Sql语句组</param>
/// <returns>是否成功</returns>
public bool ExecuteSQL(ArrayList SqlStrings)
{
bool success = true;
Open();
SqlCommand cmd = new SqlCommand();
SqlTransaction trans = Connection.BeginTransaction();
cmd.Connection = Connection;
cmd.Transaction = trans;
try
{
foreach (String str in SqlStrings)
{
cmd.CommandText = str;
cmd.ExecuteNonQuery();
}
trans.Commit();
}
catch
{
success = false;
trans.Rollback();
}
finally
{
Close();
}
return success;
} /// <summary>
/// 公有方法,在一个数据表中插入一条记录。
/// </summary>
/// <param name="TableName">表名</param>
/// <param name="Cols">哈西表,键值为字段名,值为字段值</param>
/// <returns>是否成功</returns>
public bool Insert(String TableName,Hashtable Cols)
{
int Count = 0; if (Cols.Count<=0)
{
return true;
} String Fields = " (";
String Values = " Values(";
foreach(DictionaryEntry item in Cols)
{
if (Count!=0)
{
Fields += ",";
Values += ",";
}
Fields += "["+item.Key.ToString()+"]";
Values += item.Value.ToString();
Count ++;
}
Fields += ")";
Values += ")"; String SqlString = "Insert into "+TableName+Fields+Values; String[] Sqls = {SqlString};
return ExecuteSQL(Sqls);
}
/// <summary>
/// 公有方法,更新一个数据表。
/// </summary>
/// <param name="TableName">表名</param>
/// <param name="Cols">哈西表,键值为字段名,值为字段值</param>
/// <param name="Where">Where子句</param>
/// <returns>是否成功</returns>
public bool Update(String TableName,Hashtable Cols,String Where)
{
int Count = 0;
if (Cols.Count<=0)
{
return true;
}
String Fields = " ";
foreach(DictionaryEntry item in Cols)
{
if (Count!=0)
{
Fields += ",";
}
Fields += "["+item.Key.ToString()+"]";
Fields += "=";
Fields += item.Value.ToString();
Count ++;
}
Fields += " "; String SqlString = "Update "+TableName+" Set "+Fields+Where; String[] Sqls = {SqlString};
return ExecuteSQL(Sqls);
}
}
}