我的数据库的表的字段类型为nvarchar(20),当表中数据大于6位整数时,rs.getString("fieldname")提取的数据用科学计数法表示,可否不用科学计数法表示,求救...或提供相关资料。

解决方案 »

  1.   

    应该不会吧,如果是nvarchar应该不会这样,多长都没关系的
      

  2.   

    关键是getString这个函数,他自动会把大于6位整数的显示形式为科学技术法。
      

  3.   

    数据库的表的字段类型为nvarchar(20),存在数据库中的数据不是用科学计数法表示。
    “关键是提取时,如果默认是科学计数法,可以修改一下参数。查一下函数语法就是了。”,怎么改,有没有相关文档?
      

  4.   

    在提取的sql语句里面就把这个字段转化成字符串:select to_char(field) from table;
      

  5.   

    我用的是存储过程,而且返回值已经是nvarchar(20) out,而且调用是用sqlStmt.registerOutParameter(5,Types.VARCHAR);  //zqll
    zqll = sqlStmt.getString(5); 
    我想应该没问题。
      

  6.   

    INSERT INTO test(test)VALUES('123456789')SELECT test FROM testrs.getString(1);//结果还是123456789呀.没有转为科学技术法LZ的mssql是那个版本?我的是2000,
      

  7.   

    我是用SQL2000,我用存储过程为何不行呢?
      

  8.   

    学习, up楼主也用SQL 2000, 怎么会不行呢?
      

  9.   

    nvarchar 存储整型变量? 为什么?nvarchar 存储的东西数据库不会把它认为是数字的.
    应该是你提取之后转换成数值型的时候的问题.
    例子:b为double类型
    String a=new java.text.DecimalFormat("0.00").format(b);//消除科学记数法,保留2位小数
    String a=new java.text.DecimalFormat("0").format(b);//消除科学记数法,不保留小数
      

  10.   

    CREATE TABLE TEST(
    TEST1 NVARCHAR(20)
    )
    CREATE PROCEDURE sp_testcx
    @test1 nvarchar(20) out
    AS
    if exists(select * from test )
    select 
    @test1 = test1
    from test
    GO
    INSERT INTO test VALUES('123456789')
    jsp:
    CallableStatement sqlStmt;
    //准备SQL语句 
    String sql= "{call sp_testcx(?)}";
    //准备可调用语句对象
    sqlStmt = conn.prepareCall(sql);  //登记输出参数 
      String test = " ";
    sqlStmt.registerOutParameter(1,Types.VARCHAR);  //test
    //执行该存储过程并返回结果集 
    sqlStmt.execute(); 
    test = sqlStmt.getString(1); 
    out.println(test);
      sqlStmt.close();
      conn.close();
      

  11.   

    用Decimalformat将取出的值转一下就行了
    http://www.tongyi.net/develop/Java/1017622.html
      

  12.   

    LZ 我这执行你贴出来的代码, 结果还是:123456789你的mssql打补丁了没有? jdbc驱动是那个版本?
      

  13.   

    To:楼上,是呀我刚才测试一下也是123456789,奇怪:
    我的源码是:
    for(int i=0;i<=24;i++)
    {
    for(int j=1;j<=6;j++)
    {
      nRowHour = i;
      guolu_id = j;
    //设置输入参数 
     sqlStmt.setInt(2,guolu_id); 
     sqlStmt.setString(3,rq); 
     sqlStmt.setInt(4,nRowHour); 

    //登记输出参数 
    sqlStmt.registerOutParameter(1,Types.INTEGER);  //rtn 
    sqlStmt.registerOutParameter(5,Types.VARCHAR);  //zqll
    sqlStmt.registerOutParameter(6,Types.VARCHAR); //gsll
    sqlStmt.registerOutParameter(7,Types.VARCHAR);  //rml
    //执行该存储过程并返回结果集 
    sqlStmt.execute(); 

    rtn= sqlStmt.getInt(1);
    zqll= rtn==0?"0.0":sqlStmt.getString(5); 
    gsll= rtn==0?"0.0":sqlStmt.getString(6); 
    rml= rtn==0?"0.0":sqlStmt.getString(7); 
    // sqlStmt.close();
    //   conn.close();
    %>
    ...
    这样的话就显示为科学计数法。
      

  14.   

    散分了,我弄错了,我的数据库通过触发器转化为float,现在转化为real就ok了。谢谢大家。