这段是对的代码(int类型),请往下看
if (Request.QueryString["id"] != null)
             {                int id = int.Parse(Request.QueryString["id"]);
                string sqlstr = "SELECT B_ABinfo.B_name,B_ABinfo.B_relation ,XB_Ieinfo.* FROM B_ABinfo INNER JOIN XB_Ieinfo ON B_ABinfo.B_InsuranceSlipId = XB_Ieinfo.B_InsuranceSlipId WHERE B_ABinfo.B_InsuranceSlipId='" + id + "'";
          
            database db = new database();
                 DataTable dt = db.getdatatable(sqlstr);                 foreach (DataRow dr in dt.Rows)
                 {                     B1.Text = dr["B_name"].ToString();
                     B2.Text = dr["B_relation"].ToString();                 }
这段代码为什么错???(string类型)
if (Request.QueryString["id"] != null)
             {                string id = Request.QueryString["id"];
                string sqlstr = "SELECT B_ABinfo.B_name,B_ABinfo.B_relation ,XB_Ieinfo.* FROM B_ABinfo INNER JOIN XB_Ieinfo ON B_ABinfo.B_InsuranceSlipId = XB_Ieinfo.B_InsuranceSlipId WHERE B_ABinfo.B_InsuranceSlipId='" + id + "'";
          
            database db = new database();
                 DataTable dt = db.getdatatable(sqlstr);                 foreach (DataRow dr in dt.Rows)
                 {                     B1.Text = dr["B_name"].ToString();
                     B2.Text = dr["B_relation"].ToString();                 }取int类型数据不会报错,如果数据中含有字母,就会报异常:输入字符串的格式不正确、
这是我的数据类
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.Sql;
using System.Data.SqlClient;/// <summary>
/// database 的摘要说明
/// </summary>
/// namespace data
{
    public class database
    {
      //  private static string connstr = ConfigurationSettings.AppSettings["ServerConnection"];
        protected SqlConnection conn = new SqlConnection();
        protected String connstr;
        public database()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //  
            connstr = "server=.;database=baoxian;uid=sa;pwd=;";
            
        }
        ~database()
        {
            try
            {
                if (conn != null)
                    conn.Close();
            }
            catch { }
            try
            {
                dispose();
            }
            catch { }
        }
        public void dispose()
        {
            if (conn != null)
            {
                conn.Dispose();
                conn = null;
            }
        }
        protected void open()
        {
            conn.ConnectionString = connstr;
            conn.Open();
        }
        public void close()
        {
            if (conn != null)
                conn.Close();
        }
        public int ExecuteSql(String SqlString)
        {
            int count = -1;
            open();
            try
            {
                SqlCommand cmd = new SqlCommand(SqlString, conn);
                count = cmd.ExecuteNonQuery();
            }
            catch
            {
                count = -1;
            }
            finally
            {
                close();
            }
            return count;
        }
        public DataTable getdatatable(String sqlstring)
        {
            open();
            SqlDataAdapter adapter = new SqlDataAdapter(sqlstring, conn);
            DataTable dt = new DataTable();
            adapter.Fill(dt);
            close();
            return dt;
        }
        public SqlDataReader getdatareader(String sqlstring)
        {
            open();
            SqlCommand cmd = new SqlCommand(sqlstring, conn);
            SqlDataReader dr = cmd.ExecuteReader();
            return dr;
        }
        public DataSet getmyds(String sqlstring)
        {
            open();
            SqlDataAdapter da = new SqlDataAdapter(sqlstring, conn);
            DataSet ds = new DataSet();
            da.Fill(ds);
            close();
            return ds;
        }
    }
}

解决方案 »

  1.   

    你的B_ABinfo.B_InsuranceSlipId应该是int类型吧。
    你不能在sql中用int类型和字符串类型比较的。
      

  2.   

    SELECT B_ABinfo.B_name,B_ABinfo.B_relation ,XB_Ieinfo.* FROM B_ABinfo INNER JOIN XB_Ieinfo ON B_ABinfo.B_InsuranceSlipId = XB_Ieinfo.B_InsuranceSlipId WHERE B_ABinfo.B_InsuranceSlipId=" + id; 
      

  3.   

    B_ABinfo.B_InsuranceSlipId 是整形字段的话,
    Request.QueryString["id"] 里包含字母当然不正确了
      

  4.   

    如果你数据是INT就不要加'号,如果你那ID是字符串,又有字母。你应该在数据库里设计为varchar
      

  5.   

    ls  正解。
    感觉LZ给  Request.QueryString["id"]的类型不稳定 上面没错是因为你给INT,下面又给STRING.这样试if (Convert.ToString( Request.QueryString["id"]) !=null || Convert.ToString( Request.QueryString["id"]!=" ")
    {
    }
      

  6.   

    数据库B_InsuranceSlipId的类型是varchar   只是字段里包含字母就出现异常,纯数据没有问题
      

  7.   

    B_InsuranceSlipId='" + id + "'"; 
    你这个字段到底是什么型的?如果是int的.那肯定会报错的.不要把int型或是varchar型的一味的写成'"+xxx+"'
    要分清楚你写的那两个单引号是干嘛的.
      

  8.   

    1.确认一下B_ABinfo.B_InsuranceSlipId的数据类型,如果要支持string则要确保是varchar数组类型。
    2.当id为string类型时,写为B_ABinfo.B_InsuranceSlipId = "'" + id + "'"
      

  9.   


    B_InsuranceSlipId是Varchar类型
      

  10.   

    设个断点.看一下你的 string id和sql都是什么.
    还有错误在哪行代码产生的
      

  11.   

    ps,单引号与双引号怎么分不出来的?
    补充一下,“‘”+ id + “’”(这里id是string类型)
    “”+id+“”(id是int类型)
    int类型时加上‘’不报错是因为数据库系统自动转换了,严格来说,int类型没必要加单引号
      

  12.   

    id " 1aa" string
    SELECT B_ABinfo.* ,XB_Ieinfo.* FROM B_ABinfo INNER JOIN XB_Ieinfo ON B_ABinfo.B_InsuranceSlipId = XB_Ieinfo.B_InsuranceSlipId WHERE B_ABinfo.B_InsuranceSlipId=' 1aa'
    断点到红色地方之后就跳出循环了 之后出现异常: 输入字符串的格式不正确
     foreach (DataRow dr in dt.Rows)
                     {
      

  13.   

    判断SQL文拼写的对不对,只要跟踪到拼写SQL文处,把拼好的SQL文拷出来,粘到查询分析器中执行一下,不能正确执行,肯定是没拼对
      

  14.   

    执行
     DataTable dt = db.getdatatable(sqlstr); 
    前看看两端代码的sqlstr都是什么?
      

  15.   


    可以查询的到
    一定是Text的值为空了   
        
      也就是空串   ""   
        
      空串的直接转换成数字(整数,小数)如果没赋值给变量就直接传给参数,就会出错
    这个说法感觉是对的 可是为什么是空串呢???应该字母赋值才对呢
      

  16.   


    http://www.softfault.com
      

  17.   

    在下面的代码中单步跟踪,看看id的值什么时候没的。if (Request.QueryString["id"] != null) 
                {                 string id = Request.QueryString["id"]; 
                    string sqlstr = "SELECT B_ABinfo.B_name,B_ABinfo.B_relation ,XB_Ieinfo.* FROM B_ABinfo INNER JOIN XB_Ieinfo ON B_ABinfo.B_InsuranceSlipId = XB_Ieinfo.B_InsuranceSlipId WHERE B_ABinfo.B_InsuranceSlipId='" + id + "'"; 
              
                database db = new database(); 
      

  18.   

    你直接写个变量,把sql语句赋值给变量,
    看看变量的值是否符合sql语句格式!!
      

  19.   


    id到这句就没再显示ID值是多少 DataTable dt = db.getdatatable(sqlstr);
      

  20.   

     sqlstr = "SELECT B_ABinfo.B_name,B_ABinfo.B_relation ,XB_Ieinfo.* FROM B_ABinfo INNER JOIN XB_Ieinfo ON B_ABinfo.B_InsuranceSlipId = XB_Ieinfo.B_InsuranceSlipId WHERE B_ABinfo.B_InsuranceSlipId='" + id + "'"; 断点
    在数据库执行
      

  21.   

    那可就真邪门了,
    你的id取出来也不为空,
    sql文本拼的也没错误
    在查询分析器里还能查出来,在程序就报错?!
    慢慢在看看,肯定只是个小错误~!
      

  22.   

    没明白是什么意识???
     string sqlstr = "SELECT B_ABinfo.B_name,B_ABinfo.B_relation ,XB_Ieinfo.* FROM B_ABinfo INNER JOIN XB_Ieinfo ON B_ABinfo.B_InsuranceSlipId = XB_Ieinfo.B_InsuranceSlipId WHERE B_ABinfo.B_InsuranceSlipId='" + id + "'"; 
    这不是已经写了吗???是这个意识吗?
      

  23.   

    sqlstr = "SELECT B_ABinfo.B_name,B_ABinfo.B_relation ,XB_Ieinfo.* FROM B_ABinfo INNER JOIN XB_Ieinfo ON B_ABinfo.B_InsuranceSlipId = XB_Ieinfo.B_InsuranceSlipId WHERE B_ABinfo.B_InsuranceSlipId='" + id + "'"; 
     执行到这里的时候,打断点把id 和sqlstr Response.Write一下,还不相信有这邪了
      

  24.   

    真是奇怪啊。用这个试一试:
    string id = string.Copy(Request.QueryString["id"]); 然后跟踪看id的值和sqlstr 的值。
      

  25.   


    id "1aa" string
    SELECT B_ABinfo.* ,XB_Ieinfo.* FROM B_ABinfo INNER JOIN XB_Ieinfo ON B_ABinfo.B_InsuranceSlipId = XB_Ieinfo.B_InsuranceSlipId WHERE B_ABinfo.B_InsuranceSlipId='1aa'
      

  26.   

    XB_Ieinfo.B_InsuranceSlipId是什么类型的
      

  27.   

    首页 代码
    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="index.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>保单首页</title>
    </head>
    <body>
    <script type="text/jscript">
        function yichuli(){
            if(document.getElementById("yi").style.display=="none"){
                document.getElementById("yi").style.display = "";
                document.getElementById("wei").style.display= "none";
            }
        }
         function weichuli(){
            if(document.getElementById("yi").style.display==""){
                document.getElementById("yi").style.display = "none";
                document.getElementById("wei").style.display= "";
            }
        }
    </script>
        <form id="form1" runat="server">
        <div>
        <table border="1" cellpadding="0" cellspacing="0">
            <tr>
                <td>
                   <a href="index.aspx" target="_blank"> 首页</a>
                </td>
                 <td style="width: 135px">
                    成交笔数 :<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></td>
                 <td style="width: 116px">
                    <a href="xk.aspx" target="_blank"> 险科总额:</a><asp:Label ID="Label2" runat="server" Text="Label"></asp:Label></td>
                 <td>
                    <a href="je.aspx" target="_blank"> 总金额:</a><asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
                </td>
            </tr>
            <tr>
                <td colspan="2" style="height: 21px">
                    <a href="yi_index.aspx"> 已处理</a></td>
                <td colspan="2" style="height: 21px">
                    <a href="javascript:weichuli()"> 未处理</a></td>
            </tr>
             <tr>
                 <td colspan="2" style="height: 20px">
                    <a href="je.aspx" target="_blank">根据投保金额查询</a>
                 </td>
                 <td colspan="2" style="height: 20px">
                      <a href="xk.aspx">根据险科查询</a></td>
            </tr>
             <tr>
                 <td colspan="4" style="height: 21px">
                 <span id="wei" style="display:block">
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:baoxianConnectionString %>"
                SelectCommand="SELECT * FROM [B_ABinfo] ORDER BY [B_InsuranceSlipId]"></asp:SqlDataSource>
            <asp:GridView ID="GridView1" runat="server" AllowSorting="True"
                AutoGenerateColumns="False" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None"
                BorderWidth="1px" CellPadding="3" CellSpacing="2" DataKeyNames="B_InsuranceSlipId" DataSourceID="SqlDataSource1" AllowPaging="True">
                <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
                <Columns>
                    <asp:BoundField DataField="B_InsuranceSlipId" HeaderText="编号" InsertVisible="False" ReadOnly="True"
                        SortExpression="B_InsuranceSlipId" />
                    <asp:BoundField DataField="B_name" HeaderText="投保人姓名" SortExpression="B_name" />
                    <asp:BoundField DataField="B_asaddress" HeaderText="保单送达地址" SortExpression="B_asaddress" />
                    <asp:BoundField DataField="B_aggregate" HeaderText="实收保费合计" SortExpression="B_aggregate" />
                    <asp:BoundField DataField="B_idate" HeaderText="投保日期" SortExpression="B_idate" />
                    <asp:TemplateField HeaderText="查看详情">
                        <ItemTemplate>
                            <a href='bdxq.aspx?id= <%# Eval("B_InsuranceSlipId").ToString().Trim()%>' target="_blank" >查看详细 </a> 
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
                <RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
                <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
                <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
                <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
                <PagerSettings PageButtonCount="3" />
                
            </asp:GridView>
            </span>
                 
            <span id="yi" style="display:none">&nbsp;
            </span>
                 </td>
            </tr>
            
             <tr>
                 <td colspan="2">
                    <a href="je.aspx" target="_blank">根据投保金额查询</a> </td>
                 <td colspan="2">
                    <a href="xk.aspx" target="_blank">根据险科查询</a></td>
            </tr>
             <tr>
                <td>
                     <a href="index.aspx"> 首页</a>
                 </td>
                 <td style="width: 135px">
                     成交笔数:<asp:Label ID="Label4" runat="server" Text="Label"></asp:Label></td>
                 <td style="width: 116px">
                     <a href="xk.aspx" target="_blank"> 险科总额:</a><asp:Label ID="Label5" runat="server" Text="Label"></asp:Label></td>
                 <td>
                     <a href="je.aspx" target="_blank"> 总金额:</a><asp:Label ID="Label6" runat="server" Text="Label"></asp:Label></td>
            </tr>
        </table>
            &nbsp;&nbsp;&nbsp;
        </div>
            &nbsp;&nbsp;
        </form>
    </body>
    </html>
      

  28.   

    B_ABinfo.B_InsuranceSlipId = XB_Ieinfo.B_InsuranceSlipId这两个字段类型一样么
      

  29.   

    跳转到页面的类里面代码,页面就两个label 麻烦您自己加上去 
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.Sql;
    using System.Data.Common;
    using data;public partial class Default1 : System.Web.UI.Page
    {
      
        public DataSet ds = new DataSet();
        
        protected void Page_Load(object sender, EventArgs e)
        {
        
            if (Request.QueryString["id"] != null)
                 {
                    
                    string id = Request.QueryString["id"].Trim();
                    string sqlstr = "SELECT B_ABinfo.* ,XB_Ieinfo.* FROM B_ABinfo INNER JOIN XB_Ieinfo ON B_ABinfo.B_InsuranceSlipId = XB_Ieinfo.B_InsuranceSlipId WHERE B_ABinfo.B_InsuranceSlipId='" + id + "'";
                   
                           database db = new database();
                     DataTable dt = db.getdatatable(sqlstr);                 foreach (DataRow dr in dt.Rows)
                     {                     B1.Text = dr["B_name"].ToString();
                         B2.Text = dr["B_relation"].ToString();                   
                     }     
                        }
                     
                 }     }
      

  30.   

    这是我数据类代码     都是varchar类型的长度50
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.Sql;
    using System.Data.SqlClient;/// <summary>
    /// database 的摘要说明
    /// </summary>
    /// namespace data
    {
        public class database
        {
          //  private static string connstr = ConfigurationSettings.AppSettings["ServerConnection"];
            protected SqlConnection conn = new SqlConnection();
            protected String connstr;
            public database()
            {
                //
                // TODO: 在此处添加构造函数逻辑
                //  
                connstr = "server=.;database=baoxian;uid=sa;pwd=;";
                
            }
            ~database()
            {
                try
                {
                    if (conn != null)
                        conn.Close();
                }
                catch { }
                try
                {
                    dispose();
                }
                catch { }
            }
            public void dispose()
            {
                if (conn != null)
                {
                    conn.Dispose();
                    conn = null;
                }
            }
            protected void open()
            {
                conn.ConnectionString = connstr;
                conn.Open();
            }
            public void close()
            {
                if (conn != null)
                    conn.Close();
            }
            public int ExecuteSql(String SqlString)
            {
                int count = -1;
                open();
                try
                {
                    SqlCommand cmd = new SqlCommand(SqlString, conn);
                    count = cmd.ExecuteNonQuery();
                }
                catch
                {
                    count = -1;
                }
                finally
                {
                    close();
                }
                return count;
            }
            public DataTable getdatatable(String sqlstring)
            {
                open();
                SqlDataAdapter adapter = new SqlDataAdapter(sqlstring, conn);
                DataTable dt = new DataTable();
                adapter.Fill(dt);
                close();
                return dt;
            }
            public SqlDataReader getdatareader(String sqlstring)
            {
                open();
                SqlCommand cmd = new SqlCommand(sqlstring, conn);
                SqlDataReader dr = cmd.ExecuteReader();
                return dr;
            }
            public DataSet getmyds(String sqlstring)
            {
                open();
                SqlDataAdapter da = new SqlDataAdapter(sqlstring, conn);
                DataSet ds = new DataSet();
                da.Fill(ds);
                close();
                return ds;
            }
        }
    }
      

  31.   

    public DataTable getdatatable(String sqlstring)
            {
                open();
                SqlDataAdapter adapter = new SqlDataAdapter(sqlstring, conn);
                DataTable dt = new DataTable();
                adapter.Fill(dt);
                close();
                return dt;
            } 
    红色部分应该是string吧?
      

  32.   

    楼主的疑问,我想主要原因应该在“QueryString["id"]”这里面的id吧。我这几天也遇到了类似的情况,最后究其原因也是如此。
      

  33.   

    public DataTable getdatatable(String sqlstring)
    {
         open();
         SqlDataAdapter adapter = new SqlDataAdapter(sqlstring, conn);
         DataTable dt = new DataTable();
         adapter.Fill(dt);
         close();
         return dt;

    把String sqlstring改成string sqlstring啊
      

  34.   

    谢谢各位了啊  估计是我再里面又绑定了一个GridView控件的问题,给GridView控件删了 奇迹般的就好使了 谢谢啦