您的位置:首页 > 产品设计 > UI/UE

[C#]ExecuteNonQuery()返回值注意点 ExecuteScalar()

2013-07-31 09:06 447 查看
查询某个表中是否有数据的时候,我用了ExecuteNonQuery(),并通过判断值是否大于0来判断数据的存在与否。结果与我所设想的很不一致,调试时才发现,其执行后返回的结果是-1,对此我很是不理解,回头查了下资料,如下显示:

SqlCommand.ExecuteNonQuery 方法对连接执行 Transact-SQL 语句并返回受影响的行数。

备注:可以使用 ExecuteNonQuery 来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行 UPDATE、INSERT 或 DELETE 语句,在不使用 DataSet 的情况下更改数据库中的数据。

      虽然 ExecuteNonQuery 不返回任何行,但映射到参数的任何输出参数或返回值都会用数据进行填充。对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1

       看完后才明白,原来select语句不适合ExecuteNonQuery()方法,原来是这样,真笨,方法用错了!特意把它记录下来,希望朋友不要犯类似的错误!

 

public int ExecuteNonQuery();


返回值

受影响的行数。


实现

IDbCommand.ExecuteNonQuery


备注

您可以使用 ExecuteNonQuery 来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行 UPDATE、INSERT 或 DELETE 语句,在不使用 DataSet 的情况下更改数据库中的数据。

虽然 ExecuteNonQuery 不返回任何行,但映射到参数的任何输出参数或返回值都会用数据进行填充。

对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于其他所有类型的语句,返回值为 -1。

[C#] 

public void CreateMySqlCommand(string myExecuteQuery, SqlConnection myConnection) 

{

     SqlCommand myCommand = new SqlCommand(myExecuteQuery, myConnection);

     myCommand.Connection.Open();

     myCommand.ExecuteNonQuery();

     myConnection.Close();

}

 

 

转自:http://blog.csdn.net/cdhql/article/details/6193075

            //IDisposible

            //using(类型 d=new...)

            //{.....}

//             using (SqlConnection conn = new SqlConnection("Data Source=.\\SQL2005;Initial Catalog=optrobot;Integrated Security=True"))

//             {

//                 conn.Open();

//                 //MessageBox.Show("ok");

//                 using (SqlCommand cmd = conn.CreateCommand())

//                 {

//                     cmd.CommandText = "insert into management(name,password) values('学校','哈哈')";

//                     //cmd.ExecuteNonQuery();一般用来执行update、delete、insert语句

//                     MessageBox.Show(Convert.ToString(cmd.ExecuteNonQuery()));

//                 }

//             }

            using (SqlConnection sqlconn = new SqlConnection("Data Source=.\\SQL2005;Initial Catalog=optrobot;Integrated Security= true"))

            {

                sqlconn.Open();

                using (SqlCommand sqlcmd = sqlconn.CreateCommand())

                {

//                     sqlcmd.CommandText = "select count(*) from management where name='学校'";

//                     //ExecuteScalar()一般用来执行有且只有一行一列返回值的SQL语句

//                     int i= (int)sqlcmd.ExecuteScalar();

//                     MessageBox.Show(i + " 条数据");

//                     sqlcmd.CommandText = "select 'aaa'";

//                     string s = (string)sqlcmd.ExecuteScalar();

//                     MessageBox.Show(s);

                    sqlcmd.CommandText = "insert into management(name,password) output inserted.name values('min','222')";

                    object obj=sqlcmd.ExecuteScalar();

                }

            }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: