要操作的代码是下面一段: 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");
            }
        }
    

解决方案 »

  1.   

    引用的相关类如下:
    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;
                    }
                }
            }
      

  2.   

    using System;
    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);
    }
    }
    }
      

  3.   

    看看sql语句是否正确,调试看看