再DPOPEN打开session,就连接上数据库了
而c#中没有这个方法,只能 string connstring=连接字符串
OracleConnection conn = new OracleConnection(connstring);
conn.open;
使用完成之后
conn.close
请教:
C#是否有像vb那样的创建对象,打开session的方法连接数据库呢
14 个解决方案
#1
弄个sqlhelper,把数据库的操作都放里面
#2
C# 传统的链接数据库有Ado.net ,msdn 上有demo ,请搜索一下进行参考。
#3
ado.net 微软专门干这事的
#4
去百度下个Dbhelper类吧,然后做一个配置文件,连接字符串放到里面。通过读取配置文件来做处理
#5
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//引入数据库操作的命名空间
using System.Data;//DataSet,DataTable
using System.Data.SqlClient;//SqlConnection,SqlCommand,SqlDataReader,SqlDataAdapter
namespace 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
}
}
看看能不能帮到你
#6
有dbhelper的框架,这些框架封装了一些底层操作,提供比较方便快捷的方法给高层模块调用,可以下载下来用。
你也可以自己写一个框架。
你也可以自己写一个框架。
#7
谢谢楼上的回复,使用dbhelper类或者自己写一个操作数据库的类是否可以达到这样的目的,但是这种类操作完成数据之后就close了,下次使用的时候又要重新连接,这样就无法使用数据库的缓存的SQL语句和数据,再次查询数据的时候数据库又需要重新计算和查找,性能很慢,使createobject再打开数据的目的是保持与数据库的SESSION一直是OPEN的,这样高效率操作数据库
#8
你可以在程序启动的时候OPEN,每次操作完别CLOSE不就得了...
什么时候数据库连接失败了,再重新CLOSE,OPEN一次
什么时候数据库连接失败了,再重新CLOSE,OPEN一次
#9
我再测试一下,
#10
能用就行了,再说 C# 里的数据库功能很强大
#11
ADO.Net百度很多的
#12
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();//等待回车继续
"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();//等待回车继续
#13
如果是大数据量操作,是会加快查询数据的效率,但你过多的缓存,也会影响系统的性能呢,两者间取个平衡!
#14
createobject ,还在用这么古老的连接,能与时俱进一些吗
#1
弄个sqlhelper,把数据库的操作都放里面
#2
C# 传统的链接数据库有Ado.net ,msdn 上有demo ,请搜索一下进行参考。
#3
ado.net 微软专门干这事的
#4
去百度下个Dbhelper类吧,然后做一个配置文件,连接字符串放到里面。通过读取配置文件来做处理
#5
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//引入数据库操作的命名空间
using System.Data;//DataSet,DataTable
using System.Data.SqlClient;//SqlConnection,SqlCommand,SqlDataReader,SqlDataAdapter
namespace 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
}
}
看看能不能帮到你
#6
有dbhelper的框架,这些框架封装了一些底层操作,提供比较方便快捷的方法给高层模块调用,可以下载下来用。
你也可以自己写一个框架。
你也可以自己写一个框架。
#7
谢谢楼上的回复,使用dbhelper类或者自己写一个操作数据库的类是否可以达到这样的目的,但是这种类操作完成数据之后就close了,下次使用的时候又要重新连接,这样就无法使用数据库的缓存的SQL语句和数据,再次查询数据的时候数据库又需要重新计算和查找,性能很慢,使createobject再打开数据的目的是保持与数据库的SESSION一直是OPEN的,这样高效率操作数据库
#8
你可以在程序启动的时候OPEN,每次操作完别CLOSE不就得了...
什么时候数据库连接失败了,再重新CLOSE,OPEN一次
什么时候数据库连接失败了,再重新CLOSE,OPEN一次
#9
我再测试一下,
#10
能用就行了,再说 C# 里的数据库功能很强大
#11
ADO.Net百度很多的
#12
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();//等待回车继续
"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();//等待回车继续
#13
如果是大数据量操作,是会加快查询数据的效率,但你过多的缓存,也会影响系统的性能呢,两者间取个平衡!
#14
createobject ,还在用这么古老的连接,能与时俱进一些吗