以前用MSSQL一直正常,由于项目需要所以改用MYSQL数据库,用mysql.data.dll组件。直接将参数写到SQL里没问题,但使用Parameters就什么也查不到。
代码如下:            conn.open();
            object[,] cs;
            cs = new object[,] { { "sid", "100" } };//写入参数
            string v = "select * from info where id=@sid";
            MySqlDataReader rs = null;
            conn.reader(v, "", cs, ref rs);            Response.Write(rs.Read());            rs.Close();
            rs.Dispose();
            conn.close();        public void reader(string sqlsing, string type, object[,] prarm, ref MySqlDataReader value)
        {
            MySqlCommand sqlcomm = new MySqlCommand();
            sqlcomm.CommandTimeout = 8000;
            sqlcomm.CommandText = sqlsing;
            sqlcomm.Connection = connection;
            if (type.ToLower() == "storedprocedure") sqlcomm.CommandType = CommandType.StoredProcedure;
            prarms(ref sqlcomm, prarm);
            MySqlDataReader strcon = sqlcomm.ExecuteReader(CommandBehavior.CloseConnection);
            sqlcomm.Parameters.Clear();
            value = strcon;
        }         public void prarms(ref MySqlCommand sqlcomm, object[,] p)
        {
            MySqlParameter[] ReturnParms = new MySqlParameter[p.GetLongLength(0)];
            for (int i = 0; i < p.GetLongLength(0); i++)
            {
                if (p[i,0].ToString() != "" & p[i,0] != null)
                {
                    ReturnParms[i] = new MySqlParameter(p[i, 0].ToString(), p[i, 1]);
                    sqlcomm.Parameters.Add(ReturnParms[i]);                }
            }
        }
使用"select * from info where id=@sid";就返回FALSE
使用"select * from info where id=100";可以正常显示代码修改过好多次,但还是返回false。此代码在MSSQL下正常,当然要去掉"My"

解决方案 »

  1.   

    顺便问一下加入using (MySqlTransaction trans = conn.BeginTransaction()) 事务和不加有什么区别
      

  2.   

    使用Parameter参数形式提交Command时必须要把"@"号换成"?"号,
      

  3.   

    谢谢,我将=@sid";换成=?sid";就好了。
    把第二个问题也一并回答一下吧,我就能结帖了。
    using (MySqlTransaction trans = conn.BeginTransaction()) 事务和不加有什么区别
      

  4.   

    MySqlParameter param = new MySqlParameter("?id", MySqlDbType.Int32);
      

  5.   

    楼上的方法试过了,不行的,只要将SQL里的@改成问题就行了,其它的不用改。
      

  6.   

    你的驱动下载的是什么?检查一下你的MYSQL .net connector 的版本。