各位大侠好:
   我有个程序,当我把数据保存到SQL SERVER数据库时,程序老死机,请问这是什么原因呀?急呀,急呀,分不够再加,顶者也有分

解决方案 »

  1.   

    public class SqlHelper
    {
    //数据库连接Url
    private string url=string.Empty;
    //内部命令
    private SqlCommand cmd=null; public string Url
    {
    get{return url;}
    set{url=value;}
    } public SqlCommand Command
    {
    get{return cmd;}
    } public SqlHelper(){}
    public SqlHelper(string url){this.url=url;} /// <summary>
    /// 初始化
    /// </summary>
    public void Init()
    {
    try
    {
    cmd=new SqlCommand(string .Empty,new SqlConnection(url));
    }
    catch(Exception ex)
    {
    throw new Exception("创建连接错误!",ex);
    }
    } public void SelectTextCommand(string sql,IProcessor processor)
    {
    SqlDataReader read=null;
    try
    {
    cmd.Parameters.Clear();
    cmd.CommandType=CommandType.Text;
    cmd.CommandText=sql;
    if(cmd.Connection.State!=ConnectionState.Open)
    cmd.Connection.Open();
    read=cmd.ExecuteReader();
    processor.Parse(read);
    }
    catch(Exception ex)
    {
    ex.ToString();
    }
    finally
    {
    try
    {
    if(read!=null)
    read.Close();
    if(cmd!=null)
    if(cmd.Connection.State!=ConnectionState.Closed)
    cmd.Connection.Close();
    }
    catch{}
    }
    } /// <summary>
    /// 查询sql语句
    /// </summary>
    /// <param name="sql"></param>
    /// <returns></returns>
    public DataTable SelectTextCommand(string sql)
    {
    try
    {
    cmd.Parameters.Clear();
    cmd.CommandType=CommandType.Text;
    cmd.CommandText=sql;
    if(cmd.Connection.State!=ConnectionState.Open)
    cmd.Connection.Open();
    DataTable dt=new DataTable();
    SqlDataAdapter da=new SqlDataAdapter(cmd);
    da.Fill(dt);
    return dt;
    }
    catch(Exception ex)
    {
    ex.ToString();
    }
    finally
    {
    if(cmd!=null)
    if(cmd.Connection.State!=ConnectionState.Closed)
    cmd.Connection.Close();
    }
    return null;
    } public DataTable SelectStoreCommand(SqlCommand cmd)
    {
    try
    {
    cmd.CommandType=CommandType.StoredProcedure;
    SqlDataAdapter da=new SqlDataAdapter(cmd);
    DataTable dt=new DataTable();
    if(cmd.Connection.State!=ConnectionState.Open)
    cmd.Connection.Open();
    da.Fill(dt);
    return dt;
    }
    catch(Exception ex)
    {
    ex.ToString();
    }
    finally
    {
    if(cmd!=null)
    if(cmd.Connection.State!=ConnectionState.Closed)
    cmd.Connection.Close();
    }
    return null;
    } /// <summary>
    /// 执行sql命令
    /// </summary>
    /// <param name="sql"></param>
    /// <returns></returns>
    public bool SqlTextCommand(string sql)
    {
    try
    {
    cmd.Parameters.Clear();
    cmd.CommandType=CommandType.Text;
    cmd.CommandText=sql;
    if(cmd.Connection.State!=ConnectionState.Open)
    cmd.Connection.Open();
    cmd.ExecuteNonQuery();
    return true;
    }
    catch(Exception ex)
    {
    ex.ToString();
    }
    finally
    {
    if(cmd!=null)
    if(cmd.Connection.State!=ConnectionState.Closed)
    cmd.Connection.Close();
    }
    return false;
    } /// <summary>
    /// 执行存储过程
    /// </summary>
    /// <param name="cmd"></param>
    /// <returns></returns>
    public bool SqlStoreCommand(SqlCommand cmd)
    {
    try
    {
    cmd.CommandType=CommandType.StoredProcedure;
    if(cmd.Connection.State!=ConnectionState.Open)
    cmd.Connection.Open();
    cmd.ExecuteNonQuery();
    return true;
    }
    catch(Exception ex)
    {
    ex.ToString();
    }
    finally
    {
    if(cmd!=null)
    if(cmd.Connection.State!=ConnectionState.Closed)
    cmd.Connection.Close();
    }
    return false;
    }
    }下面一个示例
    public bool Insert(EmpTableInfo info)
    {
    if(info==null)
    return false;
    SqlCommand cmd=helper.Command;
    cmd.Parameters.Clear();
    cmd.CommandText="EmpTable_Insert";
    cmd.Parameters.Add("@EmpID",SqlDbType.Int);
    cmd.Parameters.Add("@EmpCode",SqlDbType.NVarChar,32);
    cmd.Parameters.Add("@Name",SqlDbType.NVarChar,32);
    cmd.Parameters.Add("@Sex",SqlDbType.Int);
    cmd.Parameters.Add("@BirthDay",SqlDbType.DateTime);
    cmd.Parameters.Add("@Email",SqlDbType.NVarChar,32);
    cmd.Parameters.Add("@Phone",SqlDbType.NVarChar,32);
    cmd.Parameters.Add("@MobilePhone",SqlDbType.NVarChar,32);
    cmd.Parameters.Add("@ImagePath",SqlDbType.NVarChar,500);
    cmd.Parameters.Add("@Memo",SqlDbType.NText);
    cmd.Parameters.Add("@EmpTypeID",SqlDbType.Int);
    cmd.Parameters.Add("@OrganID",SqlDbType.Int);
    cmd.Parameters.Add("@DepartmentID",SqlDbType.Int);
    cmd.Parameters.Add("@GroupID",SqlDbType.Int);
    cmd.Parameters.Add("@PositionID",SqlDbType.Int);
    cmd.Parameters.Add("@UserID",SqlDbType.Int); cmd.Parameters["@EmpID"].Direction=ParameterDirection.Output;
    cmd.Parameters["@EmpCode"].Value=info.EmpCode;
    cmd.Parameters["@Name"].Value=info.Name;
    cmd.Parameters["@Sex"].Value=info.Sex;
    cmd.Parameters["@BirthDay"].Value=info.BirthDay;
    cmd.Parameters["@Email"].Value=info.Email;
    cmd.Parameters["@Phone"].Value=info.Phone;
    cmd.Parameters["@MobilePhone"].Value=info.MobilePhone;
    cmd.Parameters["@ImagePath"].Value=info.ImagePath;
    cmd.Parameters["@Memo"].Value=info.Memo;
    cmd.Parameters["@EmpTypeID"].Value=info.EmpTypeID;
    cmd.Parameters["@OrganID"].Value=info.OrganID;
    cmd.Parameters["@DepartmentID"].Value=info.DepartmentID;
    cmd.Parameters["@GroupID"].Value=info.GroupID;
    cmd.Parameters["@PositionID"].Value=info.PositionID;
    cmd.Parameters["@UserID"].Value=info.UserID; return helper.SqlStoreCommand(cmd);
    }
    查询示例
    DataTable dt=helper.SelectTextCommand(sql);
      

  2.   

    看了,我一般是用SQL语句,所以不太懂。
      

  3.   

    你是用的存储过程吧,
    修改cmd.CommandType=CommandType.StoredProcedure;
      

  4.   

    lxwin01(阿幸) 强,楼主问题代码都没有,能回答这么多......
      

  5.   

    楼上的话有道理,提问问题也是一门学问.
    一定要描述清楚才行,大家才有可能帮你解决.
    Am I right?