首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >I整数的cmd.ExecuteNonQuery值从0到-1

I整数的cmd.ExecuteNonQuery值从0到-1
EN

Stack Overflow用户
提问于 2012-07-24 04:20:52
回答 4查看 14.3K关注 0票数 5

这里我在数据库中动态创建表。用户根据自己的意愿输入姓名,然后选择语言单选按钮。所以问题是,在执行cmd.ExecuteNonQuery之后,i的整数值从0变成了-1。并显示无法创建表,但当我转到数据库时,它已经成功创建。请告诉我我哪里做错了。提前感谢!!

代码语言:javascript
复制
protected void btnpaper_Click(object sender, EventArgs e)
    {
        try
        {                
                string conn = ConfigurationManager.ConnectionStrings["sqlconn"].ConnectionString;
                SqlConnection con = new SqlConnection(conn);
                con.Open();
                char[] arr = new char[] {'n','g','l','i','s','h'};
                string str = "CREATE TABLE " + Label1.Text.Trim() + 
                             txtpaperset.Text.Trim()+ rbtnEng.Text.TrimEnd(arr) +
                             "(" + "quesNo int NOT NULL PRIMARY KEY, " + 
                             "question varchar(1000) NOT NULL," + 
                             "ansA varchar(500) NOT NULL, " + 
                             "ansB varchar(500) NOT NULL, " + 
                             "ansC varchar(500) NOT NULL, " + 
                             "ansD varchar(500) NOT NULL, " + 
                             "rightAns varchar(50) NOT NULL " + ")";                    
                SqlCommand cmd = new SqlCommand(str, con);
                int i = cmd.ExecuteNonQuery();
                if (i > 0)
                {
                    lblerrormsg.Visible = true;
                    con.Close();
                }
                else
                {
                    lblerrormsg.Text = "Table Not Created Please Try with Different Name!";                        
                    con.Close();
                }                

        }
        catch (System.Exception excep)
        {
            MessageBox.Show(excep.Message);
        }      
    }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-24 04:24:31

摘自SqlCommand.ExecuteNonQuery上的MSDN备注

对于UPDATE、INSERT和DELETE语句,返回值是受命令影响的行数。当正在插入或更新的表上存在触发器时,返回值包括受insert或update操作影响的行数以及受触发器或触发器影响的行数。对于所有其他类型的语句,返回值为-1。如果发生回档,返回值也是-1。

票数 9
EN

Stack Overflow用户

发布于 2012-07-24 04:24:04

来自SqlCommand.ExecuteNonQuery的文档(重点是我的):

对于UPDATE、INSERT和DELETE语句,返回值是受命令影响的行数。当正在插入或更新的表上存在触发器时,返回值包括受insert或update操作影响的行数以及受触发器或触发器影响的行数。对于所有其他类型的语句,返回值为-1。如果发生回滚,返回值也为-1。

您的语句是UPDATE、INSERT还是DELETE语句?不是的。因此你得到了-1。

不清楚你所说的i的值从“0”到-1是什么意思。它永远不是0。直到从ExecuteNonQuery的结果中给它赋值,它才会有值。

票数 7
EN

Stack Overflow用户

发布于 2012-07-24 04:27:55

这是设计出来的吗?

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery.aspx

还有:

cmd.executenonquery is returning -1 in vb.net windows application

你是说你得到的是-1,对吗?

编辑:要回答问题的最后一部分,请查看以下内容:

Check if table exists in SQL Server

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11619919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档