这里我动态地在数据库中创建表。 用户输入名称作为他的愿望并选择语言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);
}
}
答案 0 :(得分:9)
对于UPDATE,INSERT和DELETE语句,返回值为 受命令影响的行数。当a上存在触发器时 正在插入或更新的表,返回值包括数字 受插入或更新操作影响的行数和数字 受触发器或触发器影响的行数。对于所有其他类型的 语句,返回值为-1。如果发生回滚,则返回 值也是-1。
答案 1 :(得分:7)
来自SqlCommand.ExecuteNonQuery
的文件(强调我的):
对于UPDATE,INSERT和DELETE语句,返回值是受命令影响的行数。当插入或更新的表上存在触发器时,返回值包括插入或更新操作影响的行数以及受触发器或触发器影响的行数。 对于所有其他类型的语句,返回值为-1。如果发生回滚,则返回值也为-1。
您的语句是UPDATE,INSERT还是DELETE语句?不。因此你得到-1。
不清楚你的意思是i
的值从“0开始-1”。它永远不会是0.它不会拥有一个值,直到它从ExecuteNonQuery
的结果。
答案 2 :(得分:0)
是否按设计?
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery.aspx
还有:
cmd.executenonquery is returning -1 in vb.net windows application
你说你得到-1,对吗?
编辑:回答问题的最后部分,请参阅:
答案 3 :(得分:-2)
公共共享函数插入(ByVal SProcedure As String,ByVal parameters()As SqlParameter)As Boolean 使用cnn作为新的SqlConnection(Emplooyes) 尝试
Dim cmd As SqlCommand = New SqlCommand(SProcedure, cnn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddRange(parameters)
If cnn.State = ConnectionState.Closed Then
cnn.Open()
End If
Dim Ls As Integer
Ls= cmd.ExecuteNonQuery()
If Ls = -1 Then
Return False
Else
Return True
End If
Catch ex As Exception
Return False
Finally
cnn.Close()
End Try
End Using
End Function