当前位置:编程学习 > C#/ASP.NET >>

SQL语句无效

--------------------------------------------------------------------------------

无效的 SQL语句;期待 'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、或 'UPDATE'。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.Exception: 无效的 SQL语句;期待 'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、或 'UPDATE'。

源错误: 


行 128:            catch (OleDbException ex)
行 129:            {
行 130:                throw new Exception(ex.Message);
行 131:            }
行 132:            finally
 

源文件: F:\work\MyHbgm\MyHbgm.DAL\DBHelper.cs    行: 130 

数据库用的Access 代码生成没有错....
速求帮助啊!各位大虾们!!!! --------------------编程问答-------------------- 你先把你的代码,sql语句贴出来看看 --------------------编程问答-------------------- 貌似不会! --------------------编程问答-------------------- 代码贴出来 --------------------编程问答-------------------- selete * from newsInfo
select * from newsInfo where newsType=@newsType
update newsInfo set newTitle=@newsTitle,newsContent=@newsContent,newsType=@newsType,newsAuthor=@newsAuthor,creatTime=@creatTime where newsId=@newsId

这是我写的SQL语句 数据库用的Access --------------------编程问答-------------------- selete * from newsInfo

这句有问题,是select 不是 selete  --------------------编程问答-------------------- 你的意思是把这些一起传进去执行么?

单独传这个看

返回DataSet
--------------------编程问答-------------------- 改过了,还是不行 --------------------编程问答-------------------- 调试看下DBHelper.cs 行: 130执行的哪条语句报的错,SQL语句里拼接时少了空格? --------------------编程问答-------------------- 1. access的参数用? 代替,不认名字,只认顺序
2. 不支持一条sql语句多步操作 --------------------编程问答--------------------
引用 5 楼 cjfriends 的回复:
selete * from newsInfo

这句有问题,是select 不是 selete


+1 --------------------编程问答-------------------- 这是 方法:public static IList<News> GetAllNews()
        {
            string sqlStr = "selece * from newsInfo";
            IList<News> nlist = new List<News>();
            using(OleDbDataReader dr=DBHelper.GetDataReader(sqlStr,CommandType.Text,null))
            {
                while (dr.Read())
                {
                    News news = new News();
                    news.NewsId = (int)dr["newsId"];
                    news.NewsTitle = dr["newTitle"].ToString();
                    news.NewsContent = dr["newsContent"].ToString();
                    news.NewsType.NewsTypeName = dr["newsType"].ToString();
                    news.NewsAuthor = dr["newsAuthor"].ToString();
                    news.CreatTime = dr["creatTime"].ToString();

                    nlist.Add(news);
                }
            }
            return nlist;
        }

这是DBHelper
 public static DataTable GetDataTable(string commandText, CommandType cmdType,OleDbParameter[] parameters)
        {
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = Conn;
            cmd.CommandText = commandText;
            cmd.CommandType = cmdType;

            try
            {
                if (parameters != null)
                {
                    cmd.Parameters.AddRange(parameters);
                }
                OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                DataTable dt = new DataTable();
                da.Fill(dt);
                return dt;
            }
            catch (OleDbException ex)
            {

                throw new Exception(ex.Message);
            }
            finally
            {
                conn.Close();
            }
        } --------------------编程问答-------------------- selete * from newsInfo;
select * from newsInfo where newsType=@newsType;
update newsInfo set newTitle=@newsTitle,newsContent=@newsContent,newsType=@newsType,newsAuthor=@newsAuthor,creatTime=@creatTime where newsId=@newsId --------------------编程问答-------------------- list循环执行多条SQL语句
--------------------编程问答-------------------- selece * from newsInfo改成了select ,
又出现了rede无效阅读器关闭时尝试调用 Read 无效。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.InvalidOperationException: 阅读器关闭时尝试调用 Read 无效。

源错误: 


行 103:            using(OleDbDataReader dr=DBHelper.GetDataReader(sqlStr,CommandType.Text,null))
行 104:            {
行 105:                while (dr.Read())
行 106:                {
行 107:                    News news = new News();
 
--------------------编程问答-------------------- string sqlStr = "selece * from newsInfo";
改成string sqlStr = "select * from newsInfo; ";

并且在每个SQL语句后面加入“;”  


楼主这样做看看结果怎么样  如果不行得话  就将SQL一句一句去执行调试看看
--------------------编程问答-------------------- 自己看错误啊 连接未打开 不能使用reader --------------------编程问答-------------------- 连接打开了啊,上面有代码帮忙看一下,谢谢 --------------------编程问答--------------------
引用 14 楼 william159011 的回复:
selece * from newsInfo改成了select ,
又出现了rede无效阅读器关闭时尝试调用 Read 无效。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.InvalidOperationException: 阅读器关闭时尝试调用 Read 无效。

……

using的问题。而且finally会在自动关闭conn,而不管reader是否传递。把代码改成下面的就OK了
#
 

public static DbDataReader ExecuteReader(string sql)
        {
            //using (DbConnection conn = GetConncetion())
            //{
            DbConnection conn = GetConncetion();
            DbCommand cmd = GetCommand(conn);
            DbDataReader myReader;
            try
            {
                conn.Open();
                SetCommand(cmd, sql, CommandType.Text, COMMANDTIME, null);
                myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                return myReader;
            }
            catch (DbException ex)
            {
                throw new Exception(ex.Message);
            }

            //    finally
            //    {
            //        cmd.Dispose();
            //        conn.Close();
            //    }
            //}
        }
--------------------编程问答--------------------
#public static DbDataReader ExecuteReader(string sql) 
        { 
            //using (DbConnection conn = GetConncetion()) 
            //{ 
            DbConnection conn = GetConncetion(); 
            DbCommand cmd = GetCommand(conn); 
            DbDataReader myReader; 
            try 
            { 
                conn.Open(); 
                SetCommand(cmd, sql, CommandType.Text, COMMANDTIME, null); 
                myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
                return myReader; 
            } 
            catch (DbException ex) 
            { 
                throw new Exception(ex.Message); 
            } 

            //    finally 
            //    { 
            //        cmd.Dispose(); 
            //        conn.Close(); 
            //    } 
            //} 
        }
--------------------编程问答-------------------- connnection不用关掉吗? --------------------编程问答-------------------- DBHelper里我没有用using啊 --------------------编程问答-------------------- access 数据库好像不支持 多条语句同步操作吧,
只能循环一条一条语句的执行。 --------------------编程问答--------------------
引用 9 楼 amandag 的回复:
1. access的参数用? 代替,不认名字,只认顺序
2. 不支持一条sql语句多步操作


en  --------------------编程问答--------------------
引用 13 楼 wuyq11 的回复:
list循环执行多条SQL语句


--------------------编程问答--------------------
引用 22 楼 quanhui82 的回复:
access 数据库好像不支持 多条语句同步操作吧,
只能循环一条一条语句的执行。

--------------------编程问答-------------------- --------------------编程问答-------------------- 这种问题。是你粗心造成的。
自己好好检查下吧。
我以前也常常这样。慢慢调试总会发现什么。问出来的问题。不会涨经验
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,