请教大虾,C#连接数据库问题 c#session对象object 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 弄个sqlhelper,把数据库的操作都放里面 C# 传统的链接数据库有Ado.net ,msdn 上有demo ,请搜索一下进行参考。 去百度下个Dbhelper类吧,然后做一个配置文件,连接字符串放到里面。通过读取配置文件来做处理 using System;using System.Collections.Generic;using System.Linq;using System.Text;//引入数据库操作的命名空间using System.Data;//DataSet,DataTableusing System.Data.SqlClient;//SqlConnection,SqlCommand,SqlDataReader,SqlDataAdapternamespace DAL{ /// <summary> /// 用于封装数据库操作的辅助类 /// </summary> class DBHelper { //声明全局的连接字符串 static string constr = "server=.;database=HotelManage;uid=sa;pwd=sasa"; #region 执行普通的SQL命令 /// <summary> /// 执行增删改语句,返回受影响的行数 /// </summary> public static int MyExecuteNonQuery(string sql) { using (SqlConnection con = new SqlConnection(constr)) { con.Open(); SqlCommand cmd = new SqlCommand(sql,con); return cmd.ExecuteNonQuery(); } } /// <summary> /// 执行查询语句,返回结果集的第1行第1列(单值) /// </summary> public static object MyExecuteScalar(string sql) { using(SqlConnection con=new SqlConnection(constr)) { con.Open(); SqlCommand cmd = new SqlCommand(sql,con); return cmd.ExecuteScalar(); } } /// <summary> /// 执行查询语句,返回DataTable对象 /// </summary> public static DataTable MyDataTable(string sql) { SqlConnection con = new SqlConnection(constr); SqlDataAdapter dap = new SqlDataAdapter(sql,con); DataTable dt = new DataTable(); dap.Fill(dt); return dt; } /// <summary> /// 执行查询语句,返回SqlDataReader对象 /// </summary> public static SqlDataReader MyExecuteReader(string sql) { SqlConnection con = new SqlConnection(constr); con.Open(); SqlCommand cmd = new SqlCommand(sql,con); return cmd.ExecuteReader(CommandBehavior.CloseConnection); //CommandBehavior.CloseConnection 表示关闭DataReader对象的同时关闭Connection对象 } #endregion #region 执行参数化SQL命令 /// <summary> /// 执行参数化增删改语句,返回受影响的行数 /// </summary> public static int MyExecuteNonQuery(string sql,SqlParameter[] ps) { using (SqlConnection con = new SqlConnection(constr)) { con.Open(); SqlCommand cmd = new SqlCommand(sql, con); cmd.Parameters.AddRange(ps); return cmd.ExecuteNonQuery(); } } /// <summary> /// 执行参数化查询语句,返回结果集的第1行第1列(单值) /// </summary> public static object MyExecuteScalar(string sql, SqlParameter[] ps) { using (SqlConnection con = new SqlConnection(constr)) { con.Open(); SqlCommand cmd = new SqlCommand(sql, con); //3-为SqlCommand对象添加SqlParameter参数 cmd.Parameters.AddRange(ps); return cmd.ExecuteScalar(); } } /// <summary> /// 执行参数化查询语句,返回DataTable对象 /// </summary> public static DataTable MyDataTable(string sql,SqlParameter[] ps) { SqlConnection con = new SqlConnection(constr); SqlDataAdapter dap = new SqlDataAdapter(sql, con); //SqlDataAdapter.SelectCommand属性就是1个SqlCommand对象 dap.SelectCommand.Parameters.AddRange(ps); DataTable dt = new DataTable(); dap.Fill(dt); return dt; } /// <summary> /// 执行查询语句,返回SqlDataReader对象 /// </summary> public static SqlDataReader MyExecuteReader(string sql,SqlParameter[] ps) { SqlConnection con = new SqlConnection(constr); con.Open(); SqlCommand cmd = new SqlCommand(sql, con); cmd.Parameters.AddRange(ps); return cmd.ExecuteReader(CommandBehavior.CloseConnection); //CommandBehavior.CloseConnection 表示关闭DataReader对象的同时关闭Connection对象 } #endregion }}看看能不能帮到你 有dbhelper的框架,这些框架封装了一些底层操作,提供比较方便快捷的方法给高层模块调用,可以下载下来用。你也可以自己写一个框架。 谢谢楼上的回复,使用dbhelper类或者自己写一个操作数据库的类是否可以达到这样的目的,但是这种类操作完成数据之后就close了,下次使用的时候又要重新连接,这样就无法使用数据库的缓存的SQL语句和数据,再次查询数据的时候数据库又需要重新计算和查找,性能很慢,使createobject再打开数据的目的是保持与数据库的SESSION一直是OPEN的,这样高效率操作数据库 你可以在程序启动的时候OPEN,每次操作完别CLOSE不就得了...什么时候数据库连接失败了,再重新CLOSE,OPEN一次 string connection =//建立连接字符串 "server=WRET-MOSY688YVW\\MRGLL;database=db_test;Trusted_Connection=true"; SqlConnection sc = new SqlConnection(connection);//创建SqlConnection对象 try { sc.Open();//打开数据库连接 string cmdtext =//建立SQL命令字符串 "DELETE FROM tb_student WHERE student_name=@name"; SqlCommand cmd = new SqlCommand(cmdtext, sc);//创建SqlCommand对象 cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = "小飞";//添加参数并为参数赋值 int i = cmd.ExecuteNonQuery();//执行删除记录的命令 if (i > 0) Console.WriteLine("删除记录成功");//控制台输出字符串 } catch (Exception ex)//捕获异常 { Console.WriteLine("打开数据库错误:{0}", ex.Message);//控制台输出字符串 } finally { sc.Close();//关闭数据库连接 } System.Console.ReadLine();//等待回车继续 createobject ,还在用这么古老的连接,能与时俱进一些吗 sql行列转置 动态(C#) datalist分页第二页无法显示数据……急急急 怎样绑定winform中的datagridview? ****简单正则表达式***** 简单问题。 C#中怎么样实现橡皮筋式画线的功能? WindowsMediaPlayer全屏问题 c#连接Access的问题 ★☆★☆★关于SOCKET问题,基于用WEBFORM开发。★☆★☆★ 想用C#写一个外部API 发送邮件失败,无法加载或初始化请求的服务提供程序 Winform中日期控件多选还能取消。能不能做出来阿?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//引入数据库操作的命名空间
using System.Data;//DataSet,DataTable
using System.Data.SqlClient;//SqlConnection,SqlCommand,SqlDataReader,SqlDataAdapternamespace DAL
{
/// <summary>
/// 用于封装数据库操作的辅助类
/// </summary>
class DBHelper
{
//声明全局的连接字符串
static string constr = "server=.;database=HotelManage;uid=sa;pwd=sasa"; #region 执行普通的SQL命令
/// <summary>
/// 执行增删改语句,返回受影响的行数
/// </summary>
public static int MyExecuteNonQuery(string sql)
{
using (SqlConnection con = new SqlConnection(constr))
{
con.Open();
SqlCommand cmd = new SqlCommand(sql,con);
return cmd.ExecuteNonQuery();
}
} /// <summary>
/// 执行查询语句,返回结果集的第1行第1列(单值)
/// </summary>
public static object MyExecuteScalar(string sql)
{
using(SqlConnection con=new SqlConnection(constr))
{
con.Open();
SqlCommand cmd = new SqlCommand(sql,con);
return cmd.ExecuteScalar();
}
} /// <summary>
/// 执行查询语句,返回DataTable对象
/// </summary>
public static DataTable MyDataTable(string sql)
{
SqlConnection con = new SqlConnection(constr);
SqlDataAdapter dap = new SqlDataAdapter(sql,con);
DataTable dt = new DataTable();
dap.Fill(dt);
return dt;
} /// <summary>
/// 执行查询语句,返回SqlDataReader对象
/// </summary>
public static SqlDataReader MyExecuteReader(string sql)
{
SqlConnection con = new SqlConnection(constr);
con.Open();
SqlCommand cmd = new SqlCommand(sql,con);
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
//CommandBehavior.CloseConnection 表示关闭DataReader对象的同时关闭Connection对象
}
#endregion #region 执行参数化SQL命令
/// <summary>
/// 执行参数化增删改语句,返回受影响的行数
/// </summary>
public static int MyExecuteNonQuery(string sql,SqlParameter[] ps)
{
using (SqlConnection con = new SqlConnection(constr))
{
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
cmd.Parameters.AddRange(ps);
return cmd.ExecuteNonQuery();
}
} /// <summary>
/// 执行参数化查询语句,返回结果集的第1行第1列(单值)
/// </summary>
public static object MyExecuteScalar(string sql, SqlParameter[] ps)
{
using (SqlConnection con = new SqlConnection(constr))
{
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
//3-为SqlCommand对象添加SqlParameter参数
cmd.Parameters.AddRange(ps);
return cmd.ExecuteScalar();
}
} /// <summary>
/// 执行参数化查询语句,返回DataTable对象
/// </summary>
public static DataTable MyDataTable(string sql,SqlParameter[] ps)
{
SqlConnection con = new SqlConnection(constr);
SqlDataAdapter dap = new SqlDataAdapter(sql, con);
//SqlDataAdapter.SelectCommand属性就是1个SqlCommand对象
dap.SelectCommand.Parameters.AddRange(ps);
DataTable dt = new DataTable();
dap.Fill(dt);
return dt;
} /// <summary>
/// 执行查询语句,返回SqlDataReader对象
/// </summary>
public static SqlDataReader MyExecuteReader(string sql,SqlParameter[] ps)
{
SqlConnection con = new SqlConnection(constr);
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
cmd.Parameters.AddRange(ps);
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
//CommandBehavior.CloseConnection 表示关闭DataReader对象的同时关闭Connection对象
}
#endregion
}
}
看看能不能帮到你
你也可以自己写一个框架。
"server=WRET-MOSY688YVW\\MRGLL;database=db_test;Trusted_Connection=true"; SqlConnection sc = new SqlConnection(connection);//创建SqlConnection对象
try
{
sc.Open();//打开数据库连接
string cmdtext =//建立SQL命令字符串
"DELETE FROM tb_student WHERE student_name=@name";
SqlCommand cmd = new SqlCommand(cmdtext, sc);//创建SqlCommand对象
cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = "小飞";//添加参数并为参数赋值
int i = cmd.ExecuteNonQuery();//执行删除记录的命令
if (i > 0) Console.WriteLine("删除记录成功");//控制台输出字符串
}
catch (Exception ex)//捕获异常
{
Console.WriteLine("打开数据库错误:{0}", ex.Message);//控制台输出字符串
}
finally
{
sc.Close();//关闭数据库连接
}
System.Console.ReadLine();//等待回车继续