首先,在MySQL中创建存储过程,例如:
CREATE PROCEDURE GetUser(IN userId INT)
BEGIN
SELECT * FROM users WHERE id = userId;
END
在ASP.NET 2.0中,使用MySqlConnector,配置连接字符串:string connStr = "server=localhost;user=root;password=pass;database=test;";
MySqlConnection conn = new MySqlConnection(connStr);
MySqlCommand cmd = new MySqlCommand("GetUser", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("userId", 1);
conn.Open();
MySqlDataReader reader = cmd.ExecuteReader();
while(reader.Read()){
Response.Write(reader["name"].ToString());
}
实用开发技巧1:参数处理
在使用存储过程时,一定要用AddWithValue或Add添加参数,避免SQL注入。技巧:对于输出参数,用MySqlDbType指定类型,如cmd.Parameters.Add("@outParam", MySqlDbType.Int32).Direction = ParameterDirection.Output;
实现步骤
步骤1:安装MySQL .NET Connector。
步骤2:Web.config中添加连接字符串。
步骤3:页面代码中实例化Connection和Command。
步骤4:设置CommandType为StoredProcedure。
步骤5:添加参数并执行。
步骤6:处理返回数据,用DataReader或DataAdapter。
技巧2:异常处理
try{ conn.Open(); ... }catch(MySqlException ex){ Response.Write(ex.Message); }finally{ conn.Close(); } 这样确保连接释放。
完整页面示例
protected void Page_Load(object sender, EventArgs e){
using(MySqlConnection conn = new MySqlConnection(connStr)){
using(MySqlCommand cmd = new MySqlCommand("sp_test", conn)){
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@id", 123);
conn.Open();
string result = cmd.ExecuteScalar().ToString();
Label1.Text = result;
}
}
}
FAQ
Q: 如何处理MySQL存储过程的输入输出参数?
A: 输入用AddWithValue,输出用Direction=ParameterDirection.Output,并在Execute后读取Value。
Q: 连接不上MySQL怎么办?
A: 检查连接字符串的server、user、password、database是否正确,防火墙是否允许3306端口。
Q: DataReader和DataSet哪个好用?
A: 小数据用Reader高效,大数据或绑定GridView用DataAdapter.Fill(DataSet)。
Q: ASP.NET 2.0用什么版本的Connector?
A: 用MySQL Connector/NET 5.x或6.x,支持.NET 2.0。