一个关于在mysql数据表中如何查找前几条数据的问题


我想显示一个数据表中的前20条记录,
为什么这样的写法会出错,该如何更正?
代码如下:
OdbcConnection conn=new OdbcConnection(sys.strConnection());
conn.Open();
string str="select  top 15 * from list ";
DataSet ds=new DataSet();
OdbcDataAdapter oda=new OdbcDataAdapter(str,conn);
oda.Fill(ds,"rs");
this.DataGrid1.DataSource=ds.Tables["rs"];
this.DataGrid1.DataBind();
conn.Close();
错误信息如下:
Server Error in '/qycx1' Application.
--------------------------------------------------------------------------------

ERROR [42000] [MySQL][ODBC 3.51 Driver][mysqld-3.23.52]
You have an error in your SQL syntax near '15 * from list ' at line 1 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: Microsoft.Data.Odbc.OdbcException: ERROR [42000] [MySQL][ODBC 3.51 Driver][mysqld-3.23.52]
You have an error in your SQL syntax near '15 * from list ' at line 1

Source Error: 
Line 74:  DataSet ds=new DataSet();
Line 75:  OdbcDataAdapter oda=new OdbcDataAdapter(str,conn);
Line 76:  oda.Fill(ds,"rs");
Line 77:  this.DataGrid1.DataSource=ds.Tables["rs"];
Line 78:  this.DataGrid1.DataBind();
 
Source File: c:\inetpub\wwwroot\qycx1\qylb.aspx.cs    Line: 76 

Stack Trace: 

[OdbcException: ERROR [42000] [MySQL][ODBC 3.51 Driver][mysqld-3.23.52]You have an error in your SQL syntax near '15 * from list ' at line 1]
   Microsoft.Data.Odbc.OdbcConnection.HandleError(IntPtr hHandle, SQL_HANDLE hType, RETCODE retcode)
   Microsoft.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method)
   Microsoft.Data.Odbc.OdbcCommand.ExecuteReader(CommandBehavior behavior)
   Microsoft.Data.Odbc.OdbcCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)
   qycx.qylb.banding() in c:\inetpub\wwwroot\qycx1\qylb.aspx.cs:76
   qycx.qylb.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\qycx1\qylb.aspx.cs:31
   System.Web.UI.Control.OnLoad(EventArgs e) +67
   System.Web.UI.Control.LoadRecursive() +35
   System.Web.UI.Page.ProcessRequestMain() +731

 

9 个解决方案

#1


up

#2


string str="select  top 15 * from list "; 
  MySQL 中好像沒有這樣的語法 可以改成select * from list limit 1,15 試試.

#3


MySQL不支持top
应该用SELECT * FROM list ORDER BY ID LIMIT 1, 20

#4


不是啊,在 sqlserver 中,是有 
SELECT TOP 10 * FROM [dbo].[tablename] 的啊

#5


老大 不是所有数据库都支持这个操作的

#6


难道那个告诉你sqlserver能使用的SQL语句MySql就一定能用

#7


哦?sqlserver 和 mysql 不一样啊?

#8


select top 20 * from yourtable 

mysql和sqlserver很多语句都可以通用,但是也有地方不能的
你看看那个mysql的手册有写的

#9


哦,不好意思,刚测试select top 20 * from yourtable这个mysql不行
用这个吧
SELECT * FROM user LIMIT 1,3

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com