用的是MySQLDriverCS来访问MYSQL的
异常如下:
MySQLDriverCS Exception: MySQLDriverCS Error: wrong query.PROCEDURE education.selAllNews can't return a result set in the given context 测试代码如下:(存储过程selAllNews没错)
MySQLConnection conn = EducationHK.DAL.MySql.MySqlUtil.MySqlProvider.GetMySqlConnection();
//string sql = "select * from t_news"; //如果换成这行命令就没错
string sql = "call selAllNews(1.1);";
MySQLCommand cmd = new MySQLCommand(sql,conn);
conn.Open();
MySQLDataReader dr = cmd.ExecuteReaderEx();
while (dr.Read())
{
Response.Write(dr["title"].ToString() + "<BR/>");
}另外我用PHP调用此存储过程没问题,但是前提是要在mysql_connect(...)最后一个参数加上 131072,即:mysql_connect(host,user,pwd,1,131072) 否则也是会出现同样的错误很是不解
异常如下:
MySQLDriverCS Exception: MySQLDriverCS Error: wrong query.PROCEDURE education.selAllNews can't return a result set in the given context 测试代码如下:(存储过程selAllNews没错)
MySQLConnection conn = EducationHK.DAL.MySql.MySqlUtil.MySqlProvider.GetMySqlConnection();
//string sql = "select * from t_news"; //如果换成这行命令就没错
string sql = "call selAllNews(1.1);";
MySQLCommand cmd = new MySQLCommand(sql,conn);
conn.Open();
MySQLDataReader dr = cmd.ExecuteReaderEx();
while (dr.Read())
{
Response.Write(dr["title"].ToString() + "<BR/>");
}另外我用PHP调用此存储过程没问题,但是前提是要在mysql_connect(...)最后一个参数加上 131072,即:mysql_connect(host,user,pwd,1,131072) 否则也是会出现同样的错误很是不解
你试试
public int CheckLogin(string loginName, string loginPwd)
{
string sql = "select count(*) from admin where username=? and userpwd=?";
MySqlConnection conn = new MySqlConnection(constr);
MySqlCommand comm = new MySqlCommand(sql, conn);
MySqlParameter p1 = new MySqlParameter("?loginName",MySqlType.VarChar,50);
p1.Value = loginName;
comm.Parameters.Add(p1);
MySqlParameter p2 = new MySqlParameter("?loginPwd",MySqlType.VarChar,50);
p2.Value = loginPwd;
comm.Parameters.Add(p2); comm.Connection.Open();
int i = (int)comm.ExecuteScalar();
comm.Connection.Close();
return i;
}int i= CheckLogin(thsi.TextBox1.Text,this.TextBox2.Text)if (i>0)
{
............
}
应该是
string sql = "select count(*) from admin where username= '"+loginName+"' and userpwd='"+loginPwd+"'";
这个储存过程不能返回一个结果。
但是MySQL Connector/NET 能比较好的支持存储过程附上其调用存储过程的主要代码给大家参考,我觉得很有用
(来源:http://dev.mysql.com/doc/refman/5.1/zh/connectors.html 下‘26.2.4.4.3. 从MySQL Connector/NET调用存储程序’)
MySql.Data.MySqlClient.MySqlConnection conn;
MySql.Data.MySqlClient.MySqlCommand cmd;conn = new MySql.Data.MySqlClient.MySqlConnection();
cmd = new MySql.Data.MySqlClient.MySqlCommand();conn.ConnectionString = "server=127.0.0.1;uid=root;" +
"pwd=12345;database=test;";try
{
conn.Open();
cmd.Connection = conn; cmd.CommandText = "add_emp";
cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("?lname", "Jones");
cmd.Parameters("?lname").Direction = ParameterDirection.Input; cmd.Parameters.Add("?fname", "Tom");
cmd.Parameters("?fname").Direction = ParameterDirection.Input; cmd.Parameters.Add("?bday", DateTime.Parse("12/13/1977 2:17:36 PM"));
cmd.Parameters("?bday").Direction = ParameterDirection.Input; cmd.Parameters.Add("?empno", MySqlDbType.Int32);
cmd.Parameters("?empno").Direction = ParameterDirection.Output; cmd.ExecuteNonQuery(); MessageBox.Show(cmd.Parameters("?empno").Value);
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
MessageBox.Show("Error " + ex.Number + " has occurred: " + ex.Message,
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}