【问题标题】:TAG= 'Token line number = 1,Token line offset = 29,Token in error = FROM ' ... insert data from one column to another column of other tableTAG= 'Token line number = 1,Token line offset = 29,Token in error = FROM ' ... 将数据从一列插入到另一表的另一列
【发布时间】:2016-08-23 03:07:42
【问题描述】:

嗯...我有两个名为“chefs”和“cust_Data”的表。

我想:

  1. 将 cust_Data 中正在发布的 cmets 放入 chefs 表的评论列中。

  2. 发布意味着-> M 提供评论部分,以便客户将他们的 cmets 放在“cust_Data”中的“comment”列中,并且一旦这些 cmets 在 cust_Data...

  3. 将这些评论放在“chefs”表的“cmets”列中。

剃刀代码:

@{
    var db = Database.Open("vendors");
    var selectCommand = "SELECT dish FROM chefs WHERE ID= @0";      
    var chefID = Request.QueryString["chefid"];  
    var selectedData = db.Query(selectCommand, chefID);
    var dishName=Request.QueryString["dish"];      
    var chefName=Request.QueryString["chefName"];           

    var comments=Request["SELECT comments from chefs"];   //IMPORTANT
    var ID=Request["SELECT ID from chefs"];               //IMPORTANT

    var grid = new WebGrid(source: selectedData, rowsPerPage: 10);

    Validation.RequireField("cust_fname", "You must enter your firstname");
    Validation.RequireField("cust_lname", "You must enter your surname");
    Validation.RequireField("cust_email", "You haven't entered a valid Email_ID");
    Validation.RequireField("rating", "Rating is required");
    Validation.RequireField("comment", "Please provide your Comment about Respective Homeschef");

    var cust_fname = "";
    var cust_lname= "";
    var cust_email= "";
    var rating= "";
    var comment= "";      //IMPORTANT

     if(IsPost && Validation.IsValid() && chefID.AsInt()!=0){
       cust_fname = Request.Form["cust_fname"];
       cust_lname = Request.Form["cust_lname"];
       cust_email = Request.Form["cust_email"];
       rating = Request.Form["rating"];   
       comment = Request.Form["comment"];    // IMPORTANT->TAKING COMMENT FROM USER

       var insertCommand = "INSERT INTO cust_Data (cust_fname, cust_lname, cust_email, dish, chef_ID, rating, comment) Values(@0, @1, @2, @3, @4, @5, @6)";
       db.Execute(insertCommand,cust_fname,cust_lname, cust_email, dishName, chefID, rating, comment);   // EXECUTED SUCCESSFULLY IN cust_Data
       var insert= "INSERT INTO chefs(comments) FROM cust_Data(comment) WHERE chefs(ID)=cust_Data(chef_ID) Values(@0,@1,@2,@3)"; //IMPORTANT
       db.Execute(insert,comments,comment,ID,chefID);    // IMPORTANT -> ERROR OCCURED ?????????

    }

}

异常详情:System.Data.SqlServerCe.SqlCeException: There was an error parsing the query. [ Token line number = 1,Token line offset = 29,Token in error = FROM ]

我插入了重要标签(以节省您处理重要事情的时间),从中获取我需要解析的参数。 再次,提前非常感谢你......

【问题讨论】:

  • 我为你的成就感到骄傲!顺便问一下,您是想问我们一个问题吗?
  • 您最后一次插入语法时出错了。阅读w3schools.com > insert into select 以了解正确的语法。为什么要从 DB 的 2 个单独请​​求中获取 ID、评论?
  • 感谢@Spidey 的回复... 仍然存在令牌行错误=79。 var insert= "INSERT INTO chefs(cmets) SELECT cust_Data(comment) WHERE chefs(ID)=cust_Data(chef_ID) Values(@0,@1,@2,@3)";

标签: sql asp.net database razor database-schema


【解决方案1】:

虽然这不是一个完整的答案,但是因为解释的内容太长,所以写这个作为答案。


即使您更新了insert into 命令,select 语句仍然是错误的。您正在尝试使用插入语句的语法编写 select 语句,即 table_name(column_name) 但它应该是

SELECT column_name from table_name WHERE table_name.column_name=''

Insert into 语句通过使用以Insert Into 子句为前缀的完整 SQL select 语句来工作。所以,你的代码应该是这样的:

INSERT INTO chefs(comments) SELECT comments from cust_Data WHERE chefs.ID=cust_Data.chef_ID

但这不起作用,因为您还没有加入表chefscust_data。因此,您必须连接两个表并获取正确的记录,然后使用 insert into 命令将记录插入到chefs 表中。


进一步查看您的程序,您似乎想要更新 chefs 表中的现有记录,或者 insert 是正确的?您的 chefs 表还有其他列,即 ID,dish 在插入语句中已被忽略。我怀疑如果没有这些列,此插入语句能否正常运行。

另外,为什么要分别查询 cmets 和 ID 值。并且行也没有被过滤,所以它会从数据库中获取所有的记录。

var comments=Request["SELECT comments from chefs"];   //IMPORTANT
var ID=Request["SELECT ID from chefs"];               //IMPORTANT

您尝试实现的数据库结构和议程在我看来很奇怪。 IE。客户在cust_data.comments 中输入数据,并且您希望将这些cmets 移动/复制到chefs.comment,并且一旦数据进入cust_data 表。为什么不直接插入厨师表而不是这种两步方法。

你有没有想过从头到尾的整个过程?您是否使用 UML 图/流程将其绘制在纸上或屏幕上?


看来您在数据库方面没有足够的经验。我的建议是您首先直接在数据库工具 SSMS 上尝试这些语句,确认它正在工作,然后将其应用到您的程序中。您可以使用硬编码值进行测试,然后在将其应用到程序中时用参数替换。

如果你能学习Stored Procedures 并在你的程序中使用它,它也会对你有所帮助。这将从程序方面减少此类复杂性,并减少数据库调用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    • 1970-01-01
    相关资源
    最近更新 更多