以前用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"
代码如下: 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"
把第二个问题也一并回答一下吧,我就能结帖了。
using (MySqlTransaction trans = conn.BeginTransaction()) 事务和不加有什么区别