我整数的cmd.ExecuteNonQuery值正在进行
在这里我动态地在数据库中创建表。 用户按他的意愿输入姓名并选择语言单选按钮。 所以问题是执行cmd.ExecuteNonQuery后,我的整数值从0开始-1。并显示表不能成功,但当我去数据库已成功创建。 请让我知道我在做错什么。 感谢提前!
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);
}
}
从MSDN注意到SqlCommand.ExecuteNonQuery
对于UPDATE,INSERT和DELETE语句,返回值是该命令影响的行数。 当插入或更新的表上存在触发器时,返回值包括受插入或更新操作以及触发器或触发器影响的行数影响的行数。 对于所有其他类型的语句,返回值为-1。 如果发生回滚,返回值也是-1。
从SqlCommand.ExecuteNonQuery
的文档(重点是我的):
对于UPDATE,INSERT和DELETE语句,返回值是该命令影响的行数。 当插入或更新的表上存在触发器时,返回值包括受插入或更新操作以及触发器或触发器影响的行数影响的行数。 对于所有其他类型的语句,返回值为-1。 如果发生回滚,返回值也是-1。
您的语句是UPDATE,INSERT还是DELETE语句? 不。 因此你得到-1。
目前还不清楚你的意思是i
的值-1是否从0开始。它从来没有0.它没有值,直到从ExecuteNonQuery
的结果中分配一个值。
它是否由设计?
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery.aspx
并且:
cmd.executenonquery在vb.net windows应用程序中返回-1
你说你得到-1,对吗?
编辑:回答你的问题的最后部分,看到这个:
检查SQL Server中是否存在表
链接地址: http://www.djcxy.com/p/94449.html