cmd.ExecuteNonQuery的i整数值从0开始为-1

Rus*_*kar 5 c# asp.net sqlcmd

这里我动态地在数据库中创建表.用户输入姓名作为他的愿望并选择语言radiobutton.所以问题是在执行cmd.ExecuteNonQuery之后,i整数从0开始变为-1.并且表明该表无法创建但是当我去数据库时它已经成功创建了.请让我知道我在哪里做错了.Thanx提前!!

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);
        }      
    }
Run Code Online (Sandbox Code Playgroud)

Hat*_*oft 9

取自SqlCommand.ExecuteNonQuery上的 MSDN备注

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


Jon*_*eet 7

来自SqlCommand.ExecuteNonQuery(强调我的)文档:

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

您的语句是UPDATE,INSERT还是DELETE语句?不.因此你得到-1.

目前尚不清楚你的价值是什么意思i要-1"从" 0这是从来没有0它不具有直到它分配一个从结果的值ExecuteNonQuery.