executescalar,C#中ExecuteScalar连接怎么打开?
executescalar,C#中ExecuteScalar连接怎么打开?详细介绍
本文目录一览: ExecuteScalar()方法返回值类型是整形吗?
ExecuteScalar()方法的作用是:
执行查询,并返回查询所返回的结果集中第一行的第一列。所有其他的列和行将被忽略。
1、返回的是一个object类型,也就是说是所有数据类型的基类,可根据select所得的第一列的数据类型转换为对应的数据类型
例:
string strConn = "Data Source=(local);Initial Catalog=paperManage;Integrated Security=True";
SQLConnection objConn = new SQLconnection(strConn);
SQLCommand objCMD = new SQLCommand(strSQL,objConn);
object objResult = objCMD.ExecuteScalar() //或者 string result = objCMD.ExecuteScalar().toString();
2、当select语句无记录返回时,ExecuteScalar()返回NULL值,无法再将null值赋给任何对象或者变量,否则出现异常:System.NullReferenceException: 未将对象引用设置到对象的实例
例:
若select查询无返回记录,以下代码则会抛出异常:
try
{
string result = objCMD.ExecuteScalar().toString();
}
catch(SQLException ee)
{
MessageBox.show(ee.toString());
}
解决方法是先判断ExecuteScalar()是否为null,再进行相应的处理。
例:
if (objCMD.ExecuteScalar() == null)
{
//为空时的操作
}
else
{
result = objCMD.ExecuteScalar().ToString().Trim();
}
使用 ExecuteScalar() 方法从数据库中检索单个值(例如一个聚合值)。
典型的 ExecuteScalar() 查询可以采用类似于下面的 C# 示例的格式:
cmd.CommandText = "SELECT COUNT(*) FROM dbo.region";
Int32 count = (Int32) cmd.ExecuteScalar();
c# ExecuteScalar()
(int)只能把是数字型的字符或对象转化成int,对于含有非数字的符号的字符或对象是不能成功
convert.ToInt32()
最好还是用这个转。
省的会出现问题。
ExecuteScalar这个方法是从数据库中检索单个值返回值是object类型,必须用与它在数据库里存放的类型相同类型或者可以转换成的类型,比如数据是nchar类型值为 "123" 就可以用(int)ExecuteScalar(),如果数据是nchar类型值为 "abc"就不能用(int)ExecuteScalar(),就得写string result = ExecuteScalar().ToString
Command对象的ExecuteNonQuery()方法、ExecuteReader()方法及ExecuteScalar()方法的返回值分别为什么?
NonQuery 为影响的记录行数
Reader 为DataReader
Scalar 为sql语句中第一行,第一列的值
ExecuteNonQuery()的返回值int型。
ExecuteReader()返回值是DataReader型的
ExecuteScalar()返回值是object型的
ExecuteNonQuery()的返回值int型,(返回受影响的行数,一般用于插入,增加,删除语句)。
ExecuteReader()返回值是DataReader型的(用来读取信息,一般用于查询语句,从表和视图中)
ExecuteScalar()返回值是object型的(返回第一行第一列的值,根据情况进行类型转换)
在ADO.NET编程中, ExecuteReader、ExecuteScalar方法的作用?
ExecuteReader一般用来实例化datareader,比如command的ExecuteReader方法,返回的结果可以直接赋给dr做数据源。
ExecuteScalar也是command的方法,返回查询结果的第一行,第一列,忽略其他行,一般用于返回只有一条记录的查询!
ExecuteScalar()执行insert语句后返回的是什么
返回修改的行数
SqlCommand.ExecuteScalar 方法
执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。
你的语句是插入,怎么会有返回呢。
如果是取得插入记录的id,可以加上 select @@identity
怎么ExecuteScalar()也可以update??
OracleCommand..::.ExecuteScalar 方法
执行查询,并将查询返回的结果集中第一行的第一列作为 .NET Framework 数据类型返回。忽略额外的列或行。
下面这个是一个插入的例子,官方的,大概更新也没问题吧
static public int AddProductCategory(string newName, string connString)
{
Int32 newProdID = 0;
string sql =
"INSERT INTO Production.ProductCategory (Name) VALUES (@Name); "
+ "SELECT CAST(scope_identity() AS int)";
using (SqlConnection conn = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add("@Name", SqlDbType.VarChar);
cmd.Parameters["@name"].Value = newName;
try
{
conn.Open();
newProdID = (Int32)cmd.ExecuteScalar();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
return (int)newProdID;
}
ExecuteScalar返回的为空是,报未将对象引用设置到对象的实例
对!当null转换为string的时候就报错了!但你可以不让他报错,用convert。tostring()就可以!你可以试试!
展开全部
string
result
=
mycmd.ExecuteScalar().ToString()??"-1";
if
(result!="-1")
{
iResult
=
Convert.ToInt32(result);
}
string result = mycmd.ExecuteScalar().ToString()??"-1";
if (result!="-1")
{
iResult = Convert.ToInt32(result);
}
ExecuteScalar表示取得第一行的第一列,如果你没有数据返回的就是一个null值,吧null值转换成string类型就会报错了
C#中ExecuteScalar连接怎么打开?
this._command检查下这个对象的连接打开没,或者是在它之前你打开过另外一个数据库连接而没关闭。是后者的话把之前打开的另外一个数据库连接关闭就可以了!
这句话的意思就是
(1)你分配了 数据库链接给this._command 但是没有打开.
(2)或者 你根本没有给this._command 分配数据库链接.
调试的时候 请跟踪 this._command 对象.
如果 this._command.connection=null 说明 是 (2)
如果 this._command.connection!=null 说明是(1)
解决的话就按照 相应的解决即可.
为什么会出现 ExecuteScalar 要求已打开且可用的连接。连接的当前状态为已关闭的错误 ,求解答 谢谢谢谢谢。
第七行改成
con.Open();
Sqlcmd.ExecuteNonQuery();
con.Close();
试试
另外一个帖子我已经回复
1 首先楼主的代码非常混乱,建议你使用存储过程来做,否则一个函数包含这么多次数据查询效率不太高
2 楼主的ado。net常规用法似乎楼主不了解,除了sqladapter的fill方法不需要显式打开数据库连接,其他的executenonquery/scalar等必须显式打开连接
3 通常用法为
using(sqlconnection=new sqlconnection)
{
try
{}
catch
{}
}
C#...cmd.ExecuteNonQuery();和cmd.ExecuteScalar();
举个例子 :cmd.ExecuteNonQuery() 用于执行 update ,delete 等操作。可以返回更新了多少行,或者删除了多少行。
cmd.ExecuteScalar(); 可以用来返回像
select count(StudentName)from Students where Sex="男"
这样的语句。返回一个结果值(这里是男生的人数)。
讲的够明白了吧。在不清楚就要自己多看书了咯。
推荐一下 wrox 的 C#高级编程 里面上面的问题讲的很详细。
cmd.ExecuteNonQuery();是返回执行命令后影响的行数
cmd.ExecuteScalar();简单的说就是返回一个值。速度快。
cmd.ExecuteNonQuery();用于增删改
cmd.ExecuteScalar();用于查
C#...cmd.ExecuteNonQuery();是返回执行命令后影响的参数
返回符合你条件的所有语句,如果你要数据库里某张表的数据,说执行这个命令后他返回的是就是这张表的全部数据
cmd.ExecuteScalar();返回结果集中的首行首列
//返回的是在符合你SQL语句中的第一行第一例的数据
如果你SQL语句查的是整张表,但是这个命令就只能返回这张表的第一行,第一例的数据