executescalar

知识
少中老师 2019-07-17 16:56:40

int result = (int)ExecuteScalar()

为什么(int)ExecuteScalar()有时能转换成功,有时候不能?不能的时候只有用convert.ToInt32()来转换.ExecuteScalar这个方法是从数据库中检索单个值返回值是object类型,必须用与它在数据库里存放的类型相同类型或者可以转换成的类型,比如数据是nchar类型值为 "123" 就可以用(int)ExecuteScalar(),如果数据是nchar类型值为 "abc"就不能用(int)ExecuteScalar(),就得写string result = ExecuteScalar().ToString

#executescalar#

返回顶部

影响力:1528

多条SQL查询程序运行时间过长

描述: 程序需要执行几百条条件不同的sql查询,然后将查询的值赋值给一个excel报表。现在用的方法是每条查询用ExecuteScalar()方法取得第一行第一列的值,但是所有查询都调用这个方法需要630... 程序需要执行几百条条件不同的sql查询,然后将查询的值赋值给一个excel报表。
现在用的方法是每条查询用ExecuteScalar()方法取得第一行第一列的值,但是所有查询都调用这个方法需要6300ms。
有没有什么比较快的办法能取得这些值?
忘了说,用的C#
展开
这个解答帮助过3138人

执行时间最长的20条SQL语句(按时间降序排列),可保存为脚本方便调用:
SELECT rows_read / (num_executions + 1) as avg_rows_read,
rows_written / (num_executions + 1) as avg_rows_written,
stmt_sorts / (num_executions + 1) as avg_sorts,
total_exec_time / (num_executions + 1) as avg_exec_time,
substr(stmt_text,1,1000) as SQL_Stmt
FROM SYSIBMADM.SNAPDYN_SQL ORDER BY avg_exec_time desc fetch first 20 rows only;
祝你学习愉快!

编辑时间 2019-01-13 12:18:21
影响力:5867

mybatis批量插入返回每条数据的id,返回集合全是最后一条数据的id?(数据库主键自增)

描述: mybatis的版本为<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.1</version></dependency>...


mybatis的版本为
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>

这个解答帮助过5527人

sequence就是一个序列,你每次执行 select CASE_SEQ.nextval from dual 的时候都会返回唯一的一个ID号,因此你可以先执行这个select取到这个ID,如果这个时候有多个用户在执行这个操作,那么他们select到的ID绝对跟你的不一样(sequence就是保证这一点的)。然后你就可以用这个ID插入记录,然后再返回这个ID就OK了。 代码: string sql = "Select CASE_SEQ.currval from dual"; OracleConnection conn = DB.getCon(); OracleCommand cmd = conn.CreateCommand(); conn.Open(); string returnID = null; cmd.CommandText = sql; returnID = Convert.ToString(cmd.ExecuteScalar()); //获取ID sql = "insert into PATIENT_T(pid,name) values(returnID,'黎明')"; //将ID插入数据库 cmd.CommandText = sql; cmd.ExecuteNonQuery(); conn.Close(); 结束了,差不多就是这样,楼主自己调试一下就行了,注意ID在数据库中应该是varcahr类型的

编辑时间 2019-07-22
影响力:8664

c#sql语句使用

描述: stringstrSql="selectTOP10[试题图片],[试题编号]from试题表orderbynewid()";怎么把这条查询语句里的10,改成一个可以改变的量,并且可以在其它页面修改(winfrom窗体程序),谁能帮帮... string strSql = "select TOP 10 [试题图片],[试题编号] from 试题表 order by newid()";

怎么把这条查询语句里的10,改成一个可以改变的量,并且可以在其它页面修改(winfrom窗体程序),谁能帮帮我?
展开
这个解答帮助过2292人

看看ado。net,了解下dataset,dataview,datatable,sqldataconnection,sqlcommand(不光是sql的)还有datagrid,datalist,gridview等数据控件的使用,正常不到一周就熟悉了,还得是看书,在这里面只言片语是学不到肚子里的,在这之后就可以再看看Enterprise Library,其实以后写好个sqlhelp就可以反复重复使用了,总之还是看书比问别人知识来的快,祝你带着兴趣学习C sharp下面是个简单的例子(command执行增删改查)sqlconnection conn=new sqlconnection("Server=.;Database=xxx;Uid=sa;Pwd=sa;"providerName="System.Data.SqlClient");
sqlcommand cmd=new sqlcommand ("你想要的sql增删改查语言",conn);
conn.open();cmd.ExecuteNonQuery();///(1)如果用sqldatareader读取返回的结果的话 声明个sqldatareader,此处就是 ///sqldatareader=cmd.ExecuteReader(); ///(2)如果想返回首行查询数据的话就执行cmd.ExecuteScalar();conn.close();返回查询结果集(dataset,datable,dataview)
sqlconnection conn=new sqlconnection("Server=.;Database=xxx;Uid=sa;Pwd=sa;"providerName="System.Data.SqlClient");
dataset ds=new dataset();SqlDataAdapter da=new SqlDataAdapter("查询语句",conn); da.Fill(ds);</SPAN></SPAN>

编辑时间 2019-07-24