0

当我从 ASP C# 调用它时,该查询不会返回值,但是当我连接 MySQL 服务器并键入相同的查询时,它会返回正确的值。我无法发现问题。

这是代码段:

try
{
    personquery = "select b.* from booking b, makes m  "+
                  "where m.personid="+ 
                  DataDeneme1.login.personid.ToString() +
                  "and m.bookingno=b.bookingno";
    con = new MySqlConnection(System.Configuration.ConfigurationManager.AppSettings.Get("connectionString"));
    cmd.CommandText = personquery;
    con.Open();
    cmd.Connection = con;
    adap = new MySqlDataAdapter(personquery, con);
    adap.Fill(ds);
    // CheckBoxList1.DataSource = ds;
    // CheckBoxList1.DataBind();
    GridView1.DataSource = ds;
    GridView1.DataBind();
    con.Close();
}
catch (Exception ex)
{
    Response.Write(ex.Message);
    Response.Write(ex.StackTrace);
}

mysql服务器的输入和输出:

mysql> select b.* from booking b, makes m  where m.personid=1 and m.bookingno=b.bookingno;
+-----------+-----------------+--------------+-------------+------------+-------------+  
| bookingno | reservationdate | dropoffplace | pickupplace | pickupdate | dropoffdate |  
+-----------+-----------------+--------------+-------------+------------+-------------+  
|         8 | 2011-05-09      | Ankara       | Ankara      | 2011-05-10 | 2011-05-15  |   
|         9 | 2011-05-09      | Ankara       | Ankara      | 2011-05-20 | 2011-05-25  |   
+-----------+-----------------+--------------+-------------+------------+-------------+  
2 rows in set (0.00 sec)  

和异常消息....

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 MySql.Data.MySqlClient.NativeDriver 的 MySql.Data.MySqlClient.MySqlStream.ReadPacket() 的第 1 行的“m.bookingno=b.bookingno”附近使用正确的语法。在 MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId) 在 MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32&affectedRows, Int32& insertedId) 在 MySql.Data.MySqlClient.MySqlDataReader .NextResult() 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior 行为) 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteDbDataReader(CommandBehavior 行为) 在 System.Data.Common.DbCommand.System.Data.IDbCommand。

4

2 回答 2

2

我敢打赌它与动态值有关DataDeneme1.login.personid.ToString(),因为异常说明了下一段文本。确保您的值是您所期望的,空白/空白值会导致此错误。

更新
根据您的评论,我看到了我认为是问题所在。如果该值是1以下结果:

personquery = "select b.* from booking b, makes m  "+
              "where m.personid="+ 
              DataDeneme1.login.personid.ToString() +
              "and m.bookingno=b.bookingno";

将会:

select b.* from booking b, makes m
where m.personid=1and m.bookingno=b.bookingno

没有空格,所以将其添加到初始查询创建中:

personquery = "select b.* from booking b, makes m  "+
              "where m.personid= "+ 
              DataDeneme1.login.personid.ToString() +
              " and m.bookingno=b.bookingno";

这将导致:

select b.* from booking b, makes m
where m.personid= 1 and m.bookingno=b.bookingno
于 2011-05-09T22:56:15.430 回答
1

确保 " 和 m.bookingno=b.bookingno" 中有一个空格。我的意思是在“and”之前,比如“and”。

于 2011-05-09T23:10:30.793 回答