日期:2014-05-18  浏览次数:20487 次

求救!!!将数据库查询结果放入DataSet时发生 varchar型转化成int的错误
我将查询的结果放入DataSet结果集时发生类型转换错误,但又不知错误发生在哪,还请各位前辈多多指教小弟

下面是错的代码

public partial class p2 : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
  initData();

  }
  private void initData()
  {
  string strID = Request.QueryString["id"];

  Response.Write(strID);
   
   
  SqlConnection myCon = new SqlConnection();
  myCon.ConnectionString = "Type System Version=SQL Server 2000;persist Security Info=False;" +
  "Integrated Security=true;database=pubs;server=(local)";
  myCon.Open();

  SqlCommand selectCMD = new SqlCommand("Select * from authors "+
  "where au_id="+strID, myCon);


   
  SqlDataAdapter da = new SqlDataAdapter();
  da.SelectCommand = selectCMD;

  DataSet ds = new DataSet();
  da.Fill(ds); //异常抛出点,ErrorMessage="将 varchar 值 '172-32-1176' 转换为数据类型为 
//int 的列时发生语法错误。"

  this.Label1.Text = "ID: "+ds.Tables[0].Columns["au_id"];

  this.Label2.Text = "Name: ";
  this.Label1.Text = "Phone: ";
  this.Label1.Text = "Address: ";
  myCon.Close();

  }
}

下面是debug的异常详细信息,小弟是新手,不明白哪里发生了差错


用户代码未处理 System.Data.SqlClient.SqlException
  Message="将 varchar 值 '172-32-1176' 转换为数据类型为 int 的列时发生语法错误。"
  Source=".Net SqlClient Data Provider"
  ErrorCode=-2146232060
  Class=16
  LineNumber=1
  Number=245
  Procedure=""
  Server="(local)"
  State=1
  StackTrace:
  在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
  在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
  在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
  在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
  在 System.Data.SqlClient.SqlDataReader.HasMoreRows()
  在 System.Data.SqlClient.SqlDataReader.ReadInternal(Boolean setTimeout)
  在 System.Data.SqlClient.SqlDataReader.Read()
  在 System.Data.ProviderBase.DataReaderContainer.Read()
  在 System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)
  在 System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
  在 System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
  在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
  在 System.Data.Common.DbDataAdapter.Fill(D