如题 望高手解答

解决方案 »

  1.   

    不写SQL语句更新数据??关注下
      

  2.   

    什么意思,没sql怎么对数据进行操作
      

  3.   

    linq
    要不用.net控件,其实是都封装好了,只是不用你写而已
      

  4.   

    linq貌似是对结果进行查询 
    .net控件 在数据访问层 还是有对应的 增删改的sql语句我要求是 方法只给表名 和要修改的数据,可以告诉你是增加还是删除 或是修改
    但是注意了 这个方法内 并不生成sql语句 并能完成任务,并不调用其他 自己编写的方法。
      

  5.   

    啥orm  还 hibernate呢 
    bojo我懂
    现在只是纯ado.net啊 
      

  6.   

    hibernate面向对象,它就是不写sql
      

  7.   

    就算是SQLDATASOURCE 也要写SQL 语句的,它是写在页面的
      

  8.   

    既然要实现 插入 更新 删除操作目标对象是数据库,不写SQL语句能行吗?
    严重关注
      

  9.   

    确实可以 结贴了
    我把代码粘出来
    /// <summary>
            /// 使用DataTable插入或修改表中的数据
            /// </summary>
            /// <param name="dt">要更新至数据库的DataTable</param>
            /// <param name="dt">对应的数据库表名</param>
            public void IntoDb(DataTable dt, string TableName)
            {
                GetCb();
                cb.DataAdapter = da;
    if (ConnType == 1)
    {
    dc.CommandText = "select top 0 * from " + TableName;
    }
    else if (ConnType == 0)
    {
    dc.CommandText = "select * from " + TableName + " limit 0";
    }
                da.SelectCommand = dc;
                da.Update(dt);
            } /// <summary>
    /// 自动收集表单数据
    /// </summary>
    /// <param name="TableName">要更新的表名</param>
    /// <param name="NoStr">要过滤掉的参数名</param>
    public void AutoFormInDb(string TableName,string NoStr,StringPair[] Oth) 
    {
    HttpRequest Request = HttpContext.Current.Request;
    DataTable dt;
    DataRow dr;
    NoStr = "|id|submit|button|action|imageField|imageField.x|imageField.y|x|y|" + NoStr + "|";
    int flag = 0;
    if (Request.Params["id"] != null)
    {
    if (Request.Params["id"] != "")
    {
    //有id,属于更新操作
    flag = 1;
    }
    }
    dt = new DataTable();
    if (ConnType == 0)
    {
    dt = Exec("select * from " + TableName + " limit 0");
    }
    else if (ConnType == 1)
    {
    dt = Exec("select top 0 * from " + TableName);
    } dr = dt.NewRow();
    if (flag == 1)
    {
    dt = new DataTable();
    if (ConnType == 0)
    {
    dt = Exec("select * from " + TableName + " where id='" + StrCommon.UrlCheck(Request.Params["id"]) + "' limit 1");
    }
    else if (ConnType == 1)
    {
    dt = Exec("select top 1 * from " + TableName + " where id='" + StrCommon.UrlCheck(Request.Params["id"]) + "'");
    }
    dr = dt.Rows[0];
    } #region 接收Form和QueryString集合中的参数
    string pars = "";
    try
    {
    for (int i = 0; i < Request.QueryString.Count; i++)
    {
    pars = pars + Request.QueryString.Keys[i].ToString() + " | ";
    if (NoStr.ToLower().IndexOf("|" + Request.QueryString.Keys[i].ToString().ToLower() + "|") < 0)
    {
    dr[Request.QueryString.Keys[i].ToString()] = Request.QueryString[i].ToString();
    }
    }
    pars = pars + "________";
    for (int i = 0; i < Request.Form.Count; i++)
    {
    pars = pars + Request.Form.Keys[i].ToString() + " | ";
    if (NoStr.IndexOf("|" + Request.Form.Keys[i].ToString() + "|") < 0)
    {
    dr[Request.Form.Keys[i].ToString()] = Request.Form[i].ToString();
    }
    }
    }
    catch(Exception e)
    {
    throw new Exception(pars + "收集form信息出错,可能的原因是传入的值与字段类型不符合\n" + e.Message);
    }
    #endregion

    #region 处理需要单独设置的参数
    if (Oth!=null)
    {
    foreach ( StringPair x in Oth )
    {
    dr[x.Title] = x.Info;
    }
    }
    #endregion if (flag == 0)
    {
    dt.Rows.Add(dr);
    } #region 调用IntoDb
    //try
    //{
    IntoDb(dt, TableName);
    //}
    //catch
    //{
    // throw new Exception("更新数据库出错。除了以下原因外,还可能是"+TableName+"表没有设置主键。");
    //}
    #endregion
    }
      

  10.   

    要说明的是 da.UpdateCommand 和 da.InsertCommand 都没有预先设定
    也就是说用 适配器自带的 
    这一点我也不大明白 
      

  11.   

    到最后实际上还是有语句啊 怎么可能不用sql呢 你的数据全用XML存吧 就不用语句了
      

  12.   

    呵呵,无论是Linq或是 SQLDATASOURCE 或是hibernate
    它最终是将操作封装成了SQL语句,进行增删改查,只能说这个过程你没看到,或者说你不了解
    一个很简单的做法,使用SQL追踪,你看是否有SQL语句
      

  13.   

    你说的手动操作?不用写代码?那就用sqlDataSource控件了,简单上手,选定数据源后和GridView绑定,不用写代码就能实现更新编辑删除功能。
      

  14.   

    不知道LZ的意思是不是在使用的时候不写sql,如果是这样自己写个强些的辅助类,使用的时候直接可以使用达到你使用时候不写sql语句的目的。

    MSSQL mysql=new MSSQL.Insert(表名,值);
    MSSQL mysql2=new MSSQL.Insert(表名,值,条件);
    只是给LZ一个思路。