新手问题,将数据库相关操作写在单独的类中,供网站其它页调用,如何作?
不好意思,刚学asp.net,用c#开发
想写一个类,包含static方法,实现连接数据库,public方法,实现查询等操作
如何写?
在网站其它页均可调用它,这样不需要每个网页都要声明类似sqlconnection等属性
在这些页中如何调用上面所说的类?
给个实例或给个说明
多谢
[解决办法]
下个sqlHelper看看
[解决办法]
直接使用sqlHelper这样的类库不就好了,这些东西是不用自己花时间去写的,浪费时间
[解决办法]
/// <summary>
/// data access layer for my-sql
/// create by wujian at 2007-3-6
/// finally update by wujian at 2007-3-9
/// </summary>
public abstract class MySqlHelper
{
private string connectionString;
private MySqlConnection conn;
private MySqlCommand cmd;
private MySqlDataAdapter da;
private DataSet ds;
private DataTable dt;
//private MySqlDataReader dr;
public MySqlHelper(string inputConnectionString)
{
connectionString = inputConnectionString;
conn = new MySqlConnection(connectionString);
}
#region Build MySqlCommand
/// <summary> 无参数命令或存储过程构造MySqlCommand对象 </summary>
/// <param name= "commandTextOrProcedureName "> Sql命令或存储过程名 </param>
/// <param name= "commandType "> 类型(Sql命令或存储过程) </param>
private MySqlCommand buildSqlCommand(string commandTextOrProcedureName, CommandType commandType)
{
try
{
cmd = new MySqlCommand(commandTextOrProcedureName, this.conn);
cmd.CommandType = commandType;
return cmd;
}
catch (Exception error)
{
throw error;
}
}
/// <summary> 在新的MySqlConnection中以无参数命令或存储过程构造MySqlCommand对象 </summary>
/// <param name= "commandTextOrProcedureName "> Sql命令或存储过程名 </param>
/// <param name= "commandType "> 类型(Sql命令或存储过程) </param>
/// <param name= "newConn "> 新的MySqlConnection对象 </param>
private MySqlCommand buildSqlCommand(string commandTextOrProcedureName, CommandType commandType, MySqlConnection newConn)
{
try
{
cmd = new MySqlCommand(commandTextOrProcedureName, newConn);
cmd.CommandType = commandType;
return cmd;
}
catch (Exception error)
{
throw error;
}
}
/// <summary> 有参数命令或存储过程构造MySqlCommand对象 </summary>
/// <param name= "commandTextOrProcedureName "> Sql命令或存储过程名 </param>
/// <param name= "parameters "> MySqlParameter参数数组 </param>
/// <param name= "commandType "> 类型(Sql命令或存储过程) </param>
private MySqlCommand buildSqlCommand(string commandTextOrProcedureName, MySqlParameter[] parameters, CommandType commandType)
{
try
{
cmd = new MySqlCommand(commandTextOrProcedureName, this.conn);
cmd.CommandType = commandType;
foreach (MySqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
return cmd;
}
catch (Exception error)
{
throw error;
}
}
/// <summary> 在新的MySqlConnection中以有参数命令或存储过程构造MySqlCommand对象 </summary>
/// <param name= "commandTextOrProcedureName "> Sql命令或存储过程名 </param>
/// <param name= "parameters "> MySqlParameter参数数组 </param>
/// <param name= "commandType "> 类型(Sql命令或存储过程) </param>
/// <param name= "newConn "> 新的MySqlConnection对象 </param>
private MySqlCommand buildSqlCommand(string commandTextOrProcedureName, MySqlParameter[] parameters, CommandType commandType, MySqlConnection newConn)
{
try
{
cmd = new MySqlCommand(commandTextOrProcedureName, newConn);
cmd.CommandType = commandType;
foreach (MySqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
return cmd;
}
catch (Exception error)
{
throw error;
}
}
#endregion
/// <summary> 执行有参数查询命令或存储过程,返回第一行第一列的值 </summary>
/// <param name= "commandTextOrProcedureName "> Sql命令或存储过程名 </param>
/// <param name= "parameters "> SqlParameter参数数组 </param>
/// <param name= "commandType "> 类型(Sql命令或存储过程) </param>
/// <param name= "isNewConnection "> 是否使用新的连接执行 </param>
/// <returns> 返回第一行第一列的值,如果结果为null则返回空字符串 </returns>
protected string ExecuteScalar(string commandTextOrProcedureName, MySqlParameter[] parameters, CommandType commandType, bool isNewConnection)
{
string result = " ";
if (isNewConnection)
{
using (MySqlConnection newConn = new MySqlConnection(this.connectionString))
{
try
{
cmd = this.buildSqlCommand(commandTextOrProcedureName, parameters, commandType, newConn);
newConn.Open();
if (cmd.ExecuteScalar() != null)
result = cmd.ExecuteScalar().ToString();
}
catch (Exception error)
{
throw error;
}
finally
{
newConn.Close();
}
}
}
else
{
try
{
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
cmd = this.buildSqlCommand(commandTextOrProcedureName, parameters, commandType);
if (cmd.ExecuteScalar() != null)
result = cmd.ExecuteScalar().ToString();
}
catch (Exception error)
{
throw error;
}
finally
{
conn.Close();
}
}
return result;
}
}
因为太长,以上只示范了一个ExecuteScalar,你可以参照写出自己的ExecuteNonQuery(),ExecuteReader(),ExecuteDataTable()......等等。
[解决办法]
Microsoft 就提供了很好的 SqlHelper 类
[解决办法]
类名加方法名就行如sqlhelper.execscaler(参数);不过要写成static的方法
[解决办法]
单独編译成一个类库DLL,然后在项目中分别进行引入使用,也可将这部分内容做成Web Service的方式,在项目中调用就是。看你的情况自己定了。
[解决办法]
晕,刚才没贴完,不好意思
public class DB
{
public DB()
{
}
public MySqlConnection CreatCon()
{
return new MySqlConnection( "server=127.0.0.1;database=studentmanage; user id=root; password=123456 ");
}
public DataTable GetDataTable(string SQL)
{
MySqlConnection con = CreatCon();
MySqlDataAdapter sqlAdapter = new MySqlDataAdapter(SQL, con);
DataSet ds = new DataSet();
sqlAdapter.Fill(ds);
return ds.Tables[0];
}
public void UpdataData(string SQL)
{
MySqlConnection con = CreatCon();
MySqlCommand cmd = new MySqlCommand(SQL,con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}