C#语法SQL错误选择...插入

时间:2016-08-27 14:07:48

标签: c# sql

  

“INSERT语句的选择列表包含的项目少于   插入列表。 SELECT值的数量必须与数量匹配   INSERT列。“

我有一个问题,这是对的吗?我的代码的构造?

private void btnCheckOut_Click(object sender, EventArgs e)
        {
            DialogResult res = MessageBox.Show("Are you done adding your items?","Message", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (res == DialogResult.Yes)
            {
                Conn = k.getConn();
                Conn.Open();
                str = "INSERT INTO Items (itemCode, itemBrand, itemColor , qty) SELECT itemCode, itemBrand, itemColor FROM Purchase";
                cmd = new SqlCommand(str, Conn);
                cmd.ExecuteNonQuery();
                dr = cmd.ExecuteReader();
                cmd.Dispose();
                Conn.Close();

            MessageBox.Show("Successfully Added to your CART" ,"Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        else if (res == DialogResult.No)
        {

        }
    }`

我想在名为Items

的数据库中传输它

2 个答案:

答案 0 :(得分:1)

insert的查询中有4列

INSERT INTO Items (itemCode, itemBrand, itemColor , qty)
select中的

只有3列

 SELECT itemCode, itemBrand, itemColor FROM Purchase

应该如下

INSERT INTO Items (itemCode, itemBrand, itemColor , qty)
SELECT itemCode, itemBrand, itemColor,qty FROM Purchase

答案 1 :(得分:0)

在下面的查询中:

str = "INSERT INTO Items (itemCode, itemBrand, itemColor , qty) SELECT itemCode, itemBrand, itemColor FROM Purchase";
cmd = new SqlCommand(str, Conn);

您必须在select查询中准确传递四个列名,以便clumn列表与insert查询的列列表匹配。如果您不想获取数量列的数据,请将其从INSERT查询中删除。
您还可以为数据库中的数量列设置默认值,以确保它获得默认的整数值而不是NULL。

其次,在ExecuteNonQuery()之后不需要使用以下语句:

dr = cmd.ExecuteReader();

因为你没有对可能与博士相关的数据做任何事情 相反,如果您尝试获取插入查询所影响的行数,则可以使用以下代码:

int cnt = cmd.ExecuteNonQuery();

然后根据需要显示此变量的值,可以在标签中。

希望这会有所帮助。