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

高人帮我看看MySqlHelper源码哪里问题

这是自己写的能正常显示。求高人给看下源码是不是哪错了。只有这么多分了

string Conn = "Database='<myfendata>';Data Source='localhost';User Id='root';Password='xzjzlj';charset='utf8';pooling=true ";
            MySqlConnection dbconn = new MySqlConnection(Conn);//连接MySQL数据库
            MySqlCommand cmd = dbconn.CreateCommand();
            cmd.Connection.Open();
            cmd.CommandType = CommandType.Text;
            MySqlDataReader reader;
            cmd.CommandText = "select * from member where 1 = 1 ";
            reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                textBox1 .Text =(reader["name"].ToString());
               
            }
            reader.Close();
            cmd.Dispose();
            dbconn.Close();

这是网上的MYSQL类 



[code=csharp]
//这里显示结果为-1。表时有一行数据
textBox1.Text = MySqlHelper.ExecuteNonQuery(mysql.ConnStr, CommandType.Text, "select * from member", null).ToString();
//提示SQL有错。“MySql.Data.MySqlClient.MySqlException”类型的未经处理的异常出现在 fenhuang.exe 中。

其他信息: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* from member' at line 1
dataGridView1.DataSource = MySqlHelper.GetDataSet(MySqlHelper.Conn, CommandType.Text, " select * from member ", null).Tables[0].DefaultView;


class mysql
{

 public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
        {

            MySqlCommand cmd = new MySqlCommand();

            using (MySqlConnection conn = new MySqlConnection(connectionString))
            {
                PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
                int val = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                return val;
            }
        }

/// <summary>
        /// 返回DataSet
        /// </summary>
        /// <param name="connectionString">一个有效的连接字符串</param>
        /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
        /// <param name="cmdText">存储过程名称或者sql命令语句</param>
        /// <param name="commandParameters">执行命令所用参数的集合</param>
        /// <returns></returns>
        public static DataSet GetDataSet(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
        {
            //创建一个MySqlCommand对象
            MySqlCommand cmd = new MySqlCommand();
            //创建一个MySqlConnection对象
            MySqlConnection conn = new MySqlConnection(connectionString);

            //在这里我们用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在,

            try
            {
                //调用 PrepareCommand 方法,对 MySqlCommand 对象设置参数
                PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
                //调用 MySqlCommand  的 ExecuteReader 方法
                MySqlDataAdapter adapter = new MySqlDataAdapter();
                adapter.SelectCommand = cmd;
                DataSet ds = new DataSet();

                adapter.Fill(ds);
                //清除参数
                cmd.Parameters.Clear();
                conn.Close();
                return ds;
            }
            catch (Exception e)
            {
                throw e;
            }
        }


/// <summary>
        /// 准备执行一个命令
        /// </summary>
        /// <param name="cmd">sql命令</param>
        /// <param name="conn">OleDb连接</param>
        /// <param name="trans">OleDb事务</param>
        /// <param name="cmdType">命令类型例如 存储过程或者文本</param>
        /// <param name="cmdText">命令文本,例如:Select * from Products</param>
        /// <param name="cmdParms">执行命令的参数</param>
        private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, CommandType cmdType, string cmdText, MySqlParameter[] cmdParms)
        {

            if (conn.State != ConnectionState.Open)
                conn.Open();

            cmd.Connection = conn;
            cmd.CommandText = cmdText;

            if (trans != null)
                cmd.Transaction = trans;

            cmd.CommandType = cmdType;

            if (cmdParms != null)
            {
                foreach (MySqlParameter parm in cmdParms)
                    cmd.Parameters.Add(parm);
            }
        }
}

[/code] --------------------编程问答-------------------- 在线等高人,帮我分析一下,这个源码哪里有问题,还是调用错了 --------------------编程问答-------------------- 这里我发现是dataGridView这样有 问题,我用TEXSBOX能正常显示 --------------------编程问答-------------------- 错误显示在这里出现异常:adapter.Fill(ds); --------------------编程问答-------------------- 我是来接分的 --------------------编程问答-------------------- ExecuteNonQuery 我不是来查询的
select * from member 请把我找出所有的member
不是矛盾了么~

英语单词要多积累~~

另外请不要把sql语句写在aspx.cs中(如果你只是想试试能不能用,还是可以的) 学学三层吧~~~

还在使用sql(可以学),奥特曼了~~~了解一下ORM 学学EntityFramework,开发速度up up up~

--------------------编程问答-------------------- --------------------编程问答--------------------
引用 5 楼 moonwrite 的回复:
ExecuteNonQuery 我不是来查询的
select * from member 请把我找出所有的member
不是矛盾了么~

英语单词要多积累~~

另外请不要把sql语句写在aspx.cs中(如果你只是想试试能不能用,还是可以的) 学学三层吧~~~

还在使用sql(可以学),奥特曼了~~~了解一下ORM 学学EntityFramework,开发速度up up up~

谁说ORM就不能出现SQL了,初学者不可能一上来就搞什么三层,EntityFramework是垃圾,速度慢。

初学SQL操作就应该老老实实从SqlCommand写起,不要用什么Helper,不要分层。等到SQL操作没有任何错误了,自己会查错的时候,就可以去接触ORM,离开基础的DataTable了。推荐使用Dapper,速度最快,使用最简单。不要太复杂的框架,只会把自己灌晕。 --------------------编程问答-------------------- 网上的MYSQL帮助类多数是垃圾,别用,没有自己封装的好。你的错误信息基本上是SQL语句里含有了不可见非法字符导致的,将所有空格删除,重新敲空格上去就能好。 --------------------编程问答--------------------
引用 7 楼 qldsrx 的回复:
Quote: 引用 5 楼 moonwrite 的回复:

ExecuteNonQuery 我不是来查询的
select * from member 请把我找出所有的member
不是矛盾了么~

英语单词要多积累~~

另外请不要把sql语句写在aspx.cs中(如果你只是想试试能不能用,还是可以的) 学学三层吧~~~

还在使用sql(可以学),奥特曼了~~~了解一下ORM 学学EntityFramework,开发速度up up up~

谁说ORM就不能出现SQL了,初学者不可能一上来就搞什么三层,EntityFramework是垃圾,速度慢。

初学SQL操作就应该老老实实从SqlCommand写起,不要用什么Helper,不要分层。等到SQL操作没有任何错误了,自己会查错的时候,就可以去接触ORM,离开基础的DataTable了。推荐使用Dapper,速度最快,使用最简单。不要太复杂的框架,只会把自己灌晕。


请看我的表达和你的表达~ 我没有带什么情感~
只是指明以后学习的方向

我也没有说一定要用3层啊~ (如果你只是想试试能不能用,还是可以的)

刚刚看了一下Dapper, 迷上linq后我不怎么喜欢写sql了~~~

好吧~ 再整理一下我的个人观点~

1.你现在就按你那样去写,然后看看有有些经常重复,或复制
那么你就把他提取出来,试试把他封装(面向对象的3个特性之一)
应该可以整理出自己的MySqlHelper

然后写sql觉得没有智能提示,经常容易写错
又要经常用["Username"] 写得蛋疼~~ 这个时候试试EF(我还是推荐EF 呵呵)

然后就分层~~~





补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,