加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 插入自动增量

发布时间:2020-12-15 23:42:59 所属栏目:百科 来源:网络整理
导读:我有一个方法Insert().除了自动增量之外,一切都按预期工作.这是代码: public void Insert(string m1,int y1,int new_count) { string query = "INSERT INTO page_counter (id,month,year,page_count) VALUES('','"+m1+"',"+y1+","+new_count+")"; //create
我有一个方法Insert().除了自动增量之外,一切都按预期工作.这是代码:

public void Insert(string m1,int y1,int new_count)
    {
        string query = "INSERT INTO page_counter (id,month,year,page_count) VALUES('','"+m1+"',"+y1+","+new_count+")";

            //create command and assign the query and connection from the constructor
            MySqlCommand cmd = new MySqlCommand(query,connection);

            //Execute command
            cmd.ExecuteNonQuery();

            //close connection
            this.CloseConnection();
    }

我的Id列是自动增量.所以我的问题是如何将值插入数据库中继续表中的自动增量为id?

解决方法

您所要做的就是从插入中排除自动递增的IDENTITY列.

将您的查询更改为:

//NOTE: We leave the "id" column out of the insert,SQL Server will handle this automatically
string query = "INSERT INTO page_counter (month,page_count) VALUES (@Month,@Year,@PageCount)";

SQL将负责ID字段.

您可能会注意到我在查询中使用了标量变量.您可以(并且应该)在命令中分配这些内容,以便排除SQL注入的可能性:

编辑因为来自MySql.Data.MySqlClient PRE 4.0的事实

MySqlCommand cmd = new MySqlCommand(query,connection);

cmd.Parameters.Add(new MySqlParameter("@Month",m1));
cmd.Parameters.Add(new MySqlParameter("@Year",y1));
cmd.Parameters.Add(new MySqlParameter("@PageCount",new_count));

//Execute the INSERT
cmd.ExecuteNonQuery();

有关SQL注入的一点背景,我建议阅读:

> SQL Injection on W3Schools
> Why use Parameterized SQL on SO

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读