如何将一个Access DataTable中的数据添加到同一数据库中的另一个Datatable中插入的数据依赖于文本框控件?

Posted

技术标签:

【中文标题】如何将一个Access DataTable中的数据添加到同一数据库中的另一个Datatable中插入的数据依赖于文本框控件?【英文标题】:How to add Data from one Access DataTable into Another Datatable in the same DataBase Where the data inserted relies on a textbox control? 【发布时间】:2016-04-27 17:57:02 【问题描述】:

所以我试图将“团队成员”数据表的成员添加到代表团队的“SoccerBlue”DT 中。我已经设置了一个文本框,因此用户基本上可以查看球员的网格视图,选择一名球员,然后编写球员的电子邮件,以确定从“团队成员”中添加到“SoccerBlue”的球员。我想出的问题是按钮单击时没有将值添加到“SoccerBlue”DT。

我得到的错误是发生错误:没有为一个或多个必需参数提供值。

数据库

enter image description here

enter image description here

protected void Button1_Click1(object sender, EventArgs e)

    OleDbConnection conn = null;
    DataTable gridTable = new DataTable();
    try
    
        string connString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        conn = new OleDbConnection(connString);

        string query = "INSERT INTO [SoccerBlue] " + "(FirstName, LastName, Email, Age) " + "SELECT FirstName, LastName, Email, Age " + "FROM [Team Member] " + "WHERE Email = txtAdd.Text";
        // string query = "INSERT INTO [Team Member] (Soccer, Basketball, Football, Softball) VALUES(" + c1.Checked.ToString() + ",  " + c2.Checked.ToString() + ",  " + c3.Checked.ToString() + ",  " + c4.Checked.ToString() + ")";


        OleDbCommand cmd = new OleDbCommand(query, conn);
        conn.Open();


        cmd.CommandType = CommandType.Text;
        cmd.ExecuteNonQuery();
        cmd.Dispose();
        lblError.Text = ("Teamate Added!");

    
    catch (Exception ex)
    
        lblError.Text = ("Error occurred: " + ex.Message);
    
    finally
    
        conn.Close();
    

【问题讨论】:

你没有将它添加到数据表中... 我知道这是我的问题,我在搞砸什么? 您的 [SoccerBlue] 表中很可能有一个未在此处插入的必填列。意思是,您的数据库中的一列被定义为 NOT NULL,而没有为其分配自动生成的默认值。问题不在于如果不定义此值就无法插入行。这将是您要插入的列名列表中没有的列名。 我认为我在解释文本框方面做得并不好。我想做的是有人会在网格视图中查看玩家,然后有人会输入他们想要添加的游戏的电子邮件。然后,如果文本框与数据表中的电子邮件匹配,则该文本框将与 [Team Member] 进行比较,然后将 FirstName、LastName、Email 和 Age 的值添加到 [SoccerBlue]。我现在得到的新错误也是错误发生:查询表达式'Email = Thomas.Scott@mu.edu'中的语法错误(缺少运算符)。 【参考方案1】:

假设 txtAdd.Text 是一个文本框,那么这一行:

string query = "INSERT INTO [SoccerBlue] " + "(FirstName, LastName, Email, Age) " + "SELECT FirstName, LastName, Email, Age " + "FROM [Team Member] " + "WHERE Email = txtAdd.Text";

应该是这样的:

string query = "INSERT INTO [SoccerBlue] " + "(FirstName, LastName, Email, Age) " + "SELECT FirstName, LastName, Email, Age " + "FROM [Team Member] " + "WHERE Email = '" + txtAdd.Text + "'";

【讨论】:

txtAdd.Text 是我检查数据库的依据。我现在正在添加一张图片,说明它的样子。不幸的是,我仍然遇到同样的错误。 这是我的新错误 发生错误:查询表达式“电子邮件 = Thomas.Scott@mu.edu”中的语法错误(缺少运算符)。其中 Thomas.Scott@mu.edu 是文本框中与 dt [团队成员] 进行比较的文本 是的,第一个示例中的语法肯定是错误的。现在它看到了电子邮件地址。我会针对新错误更新我的答案。

以上是关于如何将一个Access DataTable中的数据添加到同一数据库中的另一个Datatable中插入的数据依赖于文本框控件?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET把数据查询出来保存在了一个datatable里面了,之后我想把这个datatable的数据导入到access数据库

C# DataTable 更新 Access 数据库

如何使用 SQL 命令从我的 DataTable 对象中使用 foreach-loop 更新 C# 中的 MS Access 数据库?

C#中如何将DataTable保存到数据库?

将 DataTable 保存到 MS Access 表

.net中如何将网页中的数据导出成dbf(access)文件