首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事
您的当前位置:首页正文

ado.net读取oracle结果集

2023-11-10 来源:画鸵萌宠网

/** 2 3 4 5 */ ---oracle中使用游标返回数据,在ado.net中进行读取 6 PROCEDURE ISDT_VEHICLE_TASK_CHECK(P_CARNUM IN VARCHAR2, 7 CUR_OUT OUT sys_refcursor 8 ) IS 9 G_HAS_TASK varchar2(40); -- 任务编号10 BEGIN11 12 select max(t.task_id)13 into G_HAS_TASK14 from T_ISDT_VEHICLE_TASK_LAST t15 where t.car_num = P_CARNUM16 and rownum = 117 order by t.created_date desc;18 19 if G_HAS_TASK is not null then20 21 22 OPEN CUR_OUT FOR23 select t.task_id,24 ds.id,25 ds.site_code,26 ds.center_lon,27 ds.center_lat,28 ds.latlons,29 ds.center_lon_bd,30 ds.center_lat_bd,31 ds.latlons_bd32 from T_ISDT_VEHICLE_TASK_LAST t33 inner join t_isdt_delivery_site ds34 on t.sender_site_id = ds.id35 and ds.state = 136 where t.car_num = P_CARNUM37 and rownum = 138 order by t.created_date desc;39 40 /*OPEN CUR_CARTASK FOR41 select vi.id as vehicleID,st.task_id as taskID from T_ISDT_VEHICLE_TASK_LAST st42 inner join t_isdt_vehicle_info vi on vi.car_num=st.car_num43 where st.car_num = P_CARNUM and rownum = 144 order by st.created_date desc;45 */46 --存在任务47 ----P_STATE := 1;48 else49 50 OPEN CUR_OUT FOR51 select ‘‘ as task_id,52 ‘‘ as id,53 ‘‘ as site_code,54 ‘‘ as center_lon,55 ‘‘ as center_lat,56 ‘‘ as latlons,57 ‘‘ as center_lon_bd,58 ‘‘ as center_lat_bd,59 ‘‘ as latlons_bd60 from dual;61 62 /*OPEN CUR_CARTASK FOR63 select ‘‘ as vehicleID,‘‘ as taskID from dual;*/64 65 --不存在任务66 ----P_STATE := 0;67 end if;68 END ISDT_VEHICLE_TASK_CHECK;

ado.net读取oracle雷彪

 /// <summary> /// wyg 2017-3-10 /// </summary> /// <param name="vehicleNo"></param> /// <returns></returns> public List<AreaSite> CheckVehicleInTask(string vehicleNo, out string vehicleId, out string taskId) { vehicleId = taskId = string.Empty; var list = new List<AreaSite>(); Database database = DBHelper.CreateDataBase(); DbCommand command = database.GetStoredProcCommand("ISDT_VEHICLE_DATA_SYNC.ISDT_VEHICLE_TASK_CHECK"); database.AddInParameter(command, "P_CARNUM", DbType.String, vehicleNo); using (IDataReader reader = database.ExecuteReader(command)) { while (reader.Read()) { list.Add(new AreaSite(reader)); } if (reader.NextResult()) { if (!reader.IsDBNull(0)) { vehicleId = reader.GetString(0); } if (!reader.IsDBNull(1)) { taskId = reader.GetString(1); } } } return list; }

ORACLE中返回多个游标信息:http://www.360doc.com/content/10/0511/23/1121193_27150614.shtml

ado.net读取oracle结果集

标签:desc   har   database   ade   for   order   com   ref   art   

小编还为您整理了以下内容,可能对您也有帮助:

ADO.net连接Oracle数据库

要在引入处自己加入System.Data.OracleClient

using System;
using System.Data;
using System.Data.OracleClient;
using System.Web.UI.WebControls; namespace SiFenManager.Util
{
/// <summary>
/// 数据库通用操作类
/// </summary>
public class Database
{
protected OracleConnection con;//连接对象

public Database()
{
con=new OracleConnection(DafangFramework.AppConfig.DataBaseConnectionString);
}
public Database(string constr)
{
con=new OracleConnection(constr);
}
#region 打开数据库连接
/// <summary>
/// 打开数据库连接
/// </summary>
private void Open()
{
//打开数据库连接
if(con.State==ConnectionState.Closed)
{
try
{
//打开数据库连接
con.Open();
}
catch(Exception e)
{
throw e;
}
}
}
#endregion
#region 关闭数据库连接
/// <summary>
/// 关闭数据库连接
/// </summary>
private void Close()
{
//判断连接的状态是否已经打开
if(con.State==ConnectionState.Open)
{
con.Close();
}
}
#endregion
#region 执行查询语句,返回OracleDataReader ( 注意:调用该方法后,一定要对OracleDataReader进行Close )
/// <summary>
/// 执行查询语句,返回OracleDataReader ( 注意:调用该方法后,一定要对OracleDataReader进行Close )
/// </summary>
/// <param name="sql">查询语句</param>
/// <returns>OracleDataReader</returns>
public OracleDataReader ExecuteReader(string sql)
{
OracleDataReader myReader;
Open();
OracleCommand cmd = new OracleCommand(sql, con);
myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return myReader;
}
#endregion

用的时候不关闭连接,最后退出系统时再关,一般不这么用。

建议使用tomcat连接池的方法处理,效果会好,程序也不用较多的特殊处理。

1:连接池所要解决的问题:
应用程序每一次与数据库的连接都会由于网络传输和执行数据库查询而严重降低了程序的执行效率,因此我们需要用到连接池将将我们经常要用到的数据保存在连接池中,这样就减少了网络传输和因查询而给程序执行效率带来的影响。

2:连接池的本质:用一个集合保存查询出来的数据。

3:连接池的实现原理:
我们要使用Connect pool,首先要做的是访问datasource(所有的要访问的数据都放在这里面)。datasource数据源是通过LDAP(light directory access protocal)软件进行管理的(其本质就是将数据源以树状结构进行存储,这样的话,方便查询(树状结构的查询效率是最快的),java通过JNDI(java naming directory interface)访问LDAP里面的数据。

4:在tomcat种配置连接池:
1)打开tomcat目录下的conf/context.cfg:在里面加入如下配置
Xml代码
<Resource driverClassName="oracle.jdbc.driver.OracleDriver"url="jdbc:oracle:thin:@localhost:1521:orcl" username="scott" password="tiger" maxActive="20" type="javax.sql.DataSource" author="Container" name="ds"></Resource>

<Resource driverClassName="oracle.jdbc.driver.OracleDriver"url="jdbc:oracle:thin:@localhost:1521:orcl" username="scott" password="tiger" maxActive="20" type="javax.sql.DataSource" author="Container" name="ds"></Resource>
其中:maxActive:代表的是要配置的最大连接数。
type:资源类型
2)通过应用程序执行上述连接:
Java代码
<%@page contentType="text/html" %>
<%@page import="java.sql.*"%>
<%@page import="javax.sql.*"%>
<%@page import="javax.naming.*"%>
<html>
<body>
<% Context ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup("java:comp/env/ds");//必须要
Connection con=ds.getConnection();
out.println("<h1>connection succeeful</h1>");
con.close();
%>
</body>
</html>

<%@page contentType="text/html" %>
<%@page import="java.sql.*"%>
<%@page import="javax.sql.*"%>
<%@page import="javax.naming.*"%>
<html>
<body>
<% Context ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup("java:comp/env/ds");//必须要
Connection con=ds.getConnection();
out.println("<h1>connection succeeful</h1>");
con.close();
%>
</body>
</html>
conn.close():连接池是被覆盖了的,本质上的含义,把连接池借过来的连接还回去。

java web 开发书上的例子

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<resource-ref>
<description>SQL Server 2005 DataSource</description>
<res-ref-name>jdbc/dbpooling</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

</web-app>

showUsers.jsp
<%@ page language="java" import="java.sql.*,javax.sql.*,javax.naming.*"
pageEncoding="GB2312"%>

<html>
<head>
<title>全部注册用户信息</title>
</head>

<body>
<%
try {
DataSource ds = null;
InitialContext ctx = new InitialContext();//建立上下文对象
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/dbpooling");//通过JNDI查找数据连接池
Connection conn = ds.getConnection();//获得数据库连接对象

PreparedStatement pstate = conn
.prepareStatement("select * from [User]");
ResultSet rs = pstate.executeQuery();
out.println("<table border=1>");
out.println("<tr><td>用户名</td><td>密码</td></tr>");
while (rs.next()) {
out.println("<tr><td>");
out.println(rs.getString(2));
out.println("</td><td>");
out.println(rs.getString(3));
out.println("</td></tr>");
}
out.println("</table>");
} catch (SQLException e) {
out.println(e);
}
%>
</body>
</html>

ADO.net连接Oracle数据库

要在引入处自己加入System.Data.OracleClient

using System;
using System.Data;
using System.Data.OracleClient;
using System.Web.UI.WebControls; namespace SiFenManager.Util
{
/// <summary>
/// 数据库通用操作类
/// </summary>
public class Database
{
protected OracleConnection con;//连接对象

public Database()
{
con=new OracleConnection(DafangFramework.AppConfig.DataBaseConnectionString);
}
public Database(string constr)
{
con=new OracleConnection(constr);
}
#region 打开数据库连接
/// <summary>
/// 打开数据库连接
/// </summary>
private void Open()
{
//打开数据库连接
if(con.State==ConnectionState.Closed)
{
try
{
//打开数据库连接
con.Open();
}
catch(Exception e)
{
throw e;
}
}
}
#endregion
#region 关闭数据库连接
/// <summary>
/// 关闭数据库连接
/// </summary>
private void Close()
{
//判断连接的状态是否已经打开
if(con.State==ConnectionState.Open)
{
con.Close();
}
}
#endregion
#region 执行查询语句,返回OracleDataReader ( 注意:调用该方法后,一定要对OracleDataReader进行Close )
/// <summary>
/// 执行查询语句,返回OracleDataReader ( 注意:调用该方法后,一定要对OracleDataReader进行Close )
/// </summary>
/// <param name="sql">查询语句</param>
/// <returns>OracleDataReader</returns>
public OracleDataReader ExecuteReader(string sql)
{
OracleDataReader myReader;
Open();
OracleCommand cmd = new OracleCommand(sql, con);
myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return myReader;
}
#endregion

用的时候不关闭连接,最后退出系统时再关,一般不这么用。

建议使用tomcat连接池的方法处理,效果会好,程序也不用较多的特殊处理。

1:连接池所要解决的问题:
应用程序每一次与数据库的连接都会由于网络传输和执行数据库查询而严重降低了程序的执行效率,因此我们需要用到连接池将将我们经常要用到的数据保存在连接池中,这样就减少了网络传输和因查询而给程序执行效率带来的影响。

2:连接池的本质:用一个集合保存查询出来的数据。

3:连接池的实现原理:
我们要使用Connect pool,首先要做的是访问datasource(所有的要访问的数据都放在这里面)。datasource数据源是通过LDAP(light directory access protocal)软件进行管理的(其本质就是将数据源以树状结构进行存储,这样的话,方便查询(树状结构的查询效率是最快的),java通过JNDI(java naming directory interface)访问LDAP里面的数据。

4:在tomcat种配置连接池:
1)打开tomcat目录下的conf/context.cfg:在里面加入如下配置
Xml代码
<Resource driverClassName="oracle.jdbc.driver.OracleDriver"url="jdbc:oracle:thin:@localhost:1521:orcl" username="scott" password="tiger" maxActive="20" type="javax.sql.DataSource" author="Container" name="ds"></Resource>

<Resource driverClassName="oracle.jdbc.driver.OracleDriver"url="jdbc:oracle:thin:@localhost:1521:orcl" username="scott" password="tiger" maxActive="20" type="javax.sql.DataSource" author="Container" name="ds"></Resource>
其中:maxActive:代表的是要配置的最大连接数。
type:资源类型
2)通过应用程序执行上述连接:
Java代码
<%@page contentType="text/html" %>
<%@page import="java.sql.*"%>
<%@page import="javax.sql.*"%>
<%@page import="javax.naming.*"%>
<html>
<body>
<% Context ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup("java:comp/env/ds");//必须要
Connection con=ds.getConnection();
out.println("<h1>connection succeeful</h1>");
con.close();
%>
</body>
</html>

<%@page contentType="text/html" %>
<%@page import="java.sql.*"%>
<%@page import="javax.sql.*"%>
<%@page import="javax.naming.*"%>
<html>
<body>
<% Context ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup("java:comp/env/ds");//必须要
Connection con=ds.getConnection();
out.println("<h1>connection succeeful</h1>");
con.close();
%>
</body>
</html>
conn.close():连接池是被覆盖了的,本质上的含义,把连接池借过来的连接还回去。

java web 开发书上的例子

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<resource-ref>
<description>SQL Server 2005 DataSource</description>
<res-ref-name>jdbc/dbpooling</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

</web-app>

showUsers.jsp
<%@ page language="java" import="java.sql.*,javax.sql.*,javax.naming.*"
pageEncoding="GB2312"%>

<html>
<head>
<title>全部注册用户信息</title>
</head>

<body>
<%
try {
DataSource ds = null;
InitialContext ctx = new InitialContext();//建立上下文对象
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/dbpooling");//通过JNDI查找数据连接池
Connection conn = ds.getConnection();//获得数据库连接对象

PreparedStatement pstate = conn
.prepareStatement("select * from [User]");
ResultSet rs = pstate.executeQuery();
out.println("<table border=1>");
out.println("<tr><td>用户名</td><td>密码</td></tr>");
while (rs.next()) {
out.println("<tr><td>");
out.println(rs.getString(2));
out.println("</td><td>");
out.println(rs.getString(3));
out.println("</td></tr>");
}
out.println("</table>");
} catch (SQLException e) {
out.println(e);
}
%>
</body>
</html>

C# 如何访问并操作oracle数据库....希望能说详细一点,我是一个超级超级菜鸟.....

这个不太好说,我给你写点ADO.NET的结构和关系吧,你看了应该会有点思路。
一、ADO.NET 结构
两个组件:
1、.NET Framework 数据提供程序
2、DataSet

二、.NET Framework 数据提供程序
NET Framework 数据提供程序是专门为数据处理以及快速地只进、只读访问数据而设计的组件。
1、Connection
2、Command
3、DataAdapter
4、DataReader

三、Connection 对象
是开启程序和数据库之间的连结
没有利用连结对象将数据库打开,是无法从数据库中取得数据的
这个对象在ADO.NET的最底层
可以自己产生这个对象,或是由其它的对象自动产生

四、Command 对象
架构在Connection对象上
向数据库发出操作指令(增、删、改、查)
呼叫存在数据库中的预存程序等
透过连结到数据源的Connection对象来下命令
Connection连结到哪个数据库,Command对象的命令就下到哪里

五、DataAdapter 对象
架构在Command对象上,并提供了许多配合DataSet使用的功能
在数据源于DataSet之间执行数据传输的工作
它可以透过Command对象下达命令后,并将取得的数据放入DataSet对象中

六、DataReader 对象
一次一笔向下循序的读取数据源中的数据
这些数据是只读的,并不允许作其它的操作
节省资源而且效率很好
可以降低网络的负载

七、DataSet
这个对象架构在DataAdapter对象上
可以视为一个暂存区(Cache)
可以把从数据库中所查询到的数据保留起来
可以将整个数据库显示出来
可以储存多个Table
可以透过DataAdapter对象取得表结构
可以记录数据表间的关联
本身不具备和数据源沟通的能力

例子:
string ConnectionString
= "Data Source=xxx;Persist Security Info=True;User ID=xx;Password=xx";

DataSet ds = new DataSet();
OracleConnection conn;
OracleDataAdapter da;
DataTable table = new DataTable();
OracleCommand oraCmd;

conn = new OracleConnection( ConnectionString );
conn.Open();

da = new OracleDataAdapter( "select t.* from cinfo_t t", conn );
ds.Clear();
da.Fill( ds, "UserInfo" );
conn.Close();
this.dataGridView1.DataSource = ds.Tables["UserInfo"];
-------------------------------------------------------
if( conn.State == ConnectionState.Closed )
{
conn.Open();
}
oraCmd = new OracleCommand( "truncate table xx", conn );
oraCmd.Transaction = transaction;

oraCmd.ExecuteNonQuery();

------------------------------------------------------------
DataTable dt = ( DataTable )dataGridView1.DataSource;
OracleCommandBuilder bu = new OracleCommandBuilder( da );
da.Update( ds.Tables["UserInfo"] );

以上希望对你有帮助,另外你可以去我的文库中找相关的文档看看,我传过几个ADO.NET 的文档,你看了之后应该就熟悉如何对数据库进行操作了。

C# 如何访问并操作oracle数据库....希望能说详细一点,我是一个超级超级菜鸟.....

这个不太好说,我给你写点ADO.NET的结构和关系吧,你看了应该会有点思路。
一、ADO.NET 结构
两个组件:
1、.NET Framework 数据提供程序
2、DataSet

二、.NET Framework 数据提供程序
NET Framework 数据提供程序是专门为数据处理以及快速地只进、只读访问数据而设计的组件。
1、Connection
2、Command
3、DataAdapter
4、DataReader

三、Connection 对象
是开启程序和数据库之间的连结
没有利用连结对象将数据库打开,是无法从数据库中取得数据的
这个对象在ADO.NET的最底层
可以自己产生这个对象,或是由其它的对象自动产生

四、Command 对象
架构在Connection对象上
向数据库发出操作指令(增、删、改、查)
呼叫存在数据库中的预存程序等
透过连结到数据源的Connection对象来下命令
Connection连结到哪个数据库,Command对象的命令就下到哪里

五、DataAdapter 对象
架构在Command对象上,并提供了许多配合DataSet使用的功能
在数据源于DataSet之间执行数据传输的工作
它可以透过Command对象下达命令后,并将取得的数据放入DataSet对象中

六、DataReader 对象
一次一笔向下循序的读取数据源中的数据
这些数据是只读的,并不允许作其它的操作
节省资源而且效率很好
可以降低网络的负载

七、DataSet
这个对象架构在DataAdapter对象上
可以视为一个暂存区(Cache)
可以把从数据库中所查询到的数据保留起来
可以将整个数据库显示出来
可以储存多个Table
可以透过DataAdapter对象取得表结构
可以记录数据表间的关联
本身不具备和数据源沟通的能力

例子:
string ConnectionString
= "Data Source=xxx;Persist Security Info=True;User ID=xx;Password=xx";

DataSet ds = new DataSet();
OracleConnection conn;
OracleDataAdapter da;
DataTable table = new DataTable();
OracleCommand oraCmd;

conn = new OracleConnection( ConnectionString );
conn.Open();

da = new OracleDataAdapter( "select t.* from cinfo_t t", conn );
ds.Clear();
da.Fill( ds, "UserInfo" );
conn.Close();
this.dataGridView1.DataSource = ds.Tables["UserInfo"];
-------------------------------------------------------
if( conn.State == ConnectionState.Closed )
{
conn.Open();
}
oraCmd = new OracleCommand( "truncate table xx", conn );
oraCmd.Transaction = transaction;

oraCmd.ExecuteNonQuery();

------------------------------------------------------------
DataTable dt = ( DataTable )dataGridView1.DataSource;
OracleCommandBuilder bu = new OracleCommandBuilder( da );
da.Update( ds.Tables["UserInfo"] );

以上希望对你有帮助,另外你可以去我的文库中找相关的文档看看,我传过几个ADO.NET 的文档,你看了之后应该就熟悉如何对数据库进行操作了。

c#,ADO.NET中,如何把查询的结果显示出来?就跟sql server的显示结果一样。连接查询我已经知道了

    在页面上放置一个GridView

    在查询按钮代码中放入如下语句:

            string cString = 连接数据库语句

            OracleConnection conn = new OracleConnection();

            conn.ConnectionString = cString;

            conn.Open();

            string strSql =查询语句

            OracleDataAdapter da = new OracleDataAdapter(strSql, conn);

            DataTable dt = new DataTable();

            da.Fill(dt);

            conn.Close();

            GridView1.DataSource = dt;

            GridView1.DataBind();

ado.net执行oracle 存储过程


ado.net执行oracle 存储过程如下:
OracleConnection con=new OracleConnection(strcon);
OracleCommand cmd=new OracleCommand();
OracleTransaction mytrans ;
try
{
con.Open ();
mytrans =con.BeginTransaction();
cmd.Connection =con;
cmd.CommandText ="rfgetid";
cmd.CommandType =CommandType .StoredProcere;
cmd.Transaction =mytrans ;
OracleParameter parameter_in=new OracleParameter("as_bm",OracleType.Char);
OracleParameter parameter_out=new OracleParameter ("as_sxh",OracleType .Number );
parameter_in.Direction =ParameterDirection .Input;
parameter_out.Direction=ParameterDirection .Output ;
parameter_in .Value =tblname.ToUpper();
cmd.Parameters .Add(parameter_in );
cmd.Parameters.Add(parameter_out);
cmd.ExecuteNonQuery();
mytrans .Commit();
return int.Parse(parameter_out .Value.ToString()) ;
}
catch(Exception er)
{
throw new Exception(er.Message);
mytrans .Rollback();
}
finally
{
cmd.Dispose ();
con.Close ();
}

ado.net执行oracle 存储过程


ado.net执行oracle 存储过程如下:
OracleConnection con=new OracleConnection(strcon);
OracleCommand cmd=new OracleCommand();
OracleTransaction mytrans ;
try
{
con.Open ();
mytrans =con.BeginTransaction();
cmd.Connection =con;
cmd.CommandText ="rfgetid";
cmd.CommandType =CommandType .StoredProcere;
cmd.Transaction =mytrans ;
OracleParameter parameter_in=new OracleParameter("as_bm",OracleType.Char);
OracleParameter parameter_out=new OracleParameter ("as_sxh",OracleType .Number );
parameter_in.Direction =ParameterDirection .Input;
parameter_out.Direction=ParameterDirection .Output ;
parameter_in .Value =tblname.ToUpper();
cmd.Parameters .Add(parameter_in );
cmd.Parameters.Add(parameter_out);
cmd.ExecuteNonQuery();
mytrans .Commit();
return int.Parse(parameter_out .Value.ToString()) ;
}
catch(Exception er)
{
throw new Exception(er.Message);
mytrans .Rollback();
}
finally
{
cmd.Dispose ();
con.Close ();
}

Ado.net访问数据库的方法和步骤

   不论从语法来看 还是从风格和设计目标来看 ADO NET都和ADO有显著的不同 在ASP中通过ADO访问数据库 一般要通过以下四个步骤

   创建一个到数据库的链路 即ADO Connection

   查询一个数据集合 即执行SQL 产生一个Recordset

   对数据集合进行需要的操作

   关闭数据链路

  在ADO NET里 这些步骤有很大的变化 ADO NET的最重要概念之一是DataSet DataSet是不依赖于数据库的数据集合 所谓 就是 即使断开数据链路 或者关闭数据库 DataSet依然是可用的 如果你在ASP里面使用过非连接记录集合(Connectionless Recordset) 那么DataSet就是这种技术的最彻底的替代品

  有了DataSet 那么 ADO NET访问数据库的步骤就相应地改变了

  ◆创建一个数据库链路   ◆请求一个记录集合   ◆把记录集合暂存到DataSet   ◆如果需要 返回第 步 (DataSet可以容纳多个数据集合)   ◆关闭数据库链路   ◆在DataSet上做所需要的操作

lishixin/Article/program/net/201311/15216

C#如何调用SQL数据库8

对于不同的.NET数据提供者,ADO.NET采用不同的Connection对象连接数据库。这些Connection对象为我们屏蔽了具体的实现细节,并提供了一种统一的实现方法。
Connection类有四种:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection。
SqlConnection类的对象连接SQL Server数据库;OracleConnection 类的对象连接Oracle数据库;OleDbConnection类的对象连接支持OLE DB的数据库,如Access;而OdbcConnection类的对象连接任何支持ODBC的数据库。与数据库的所有通讯最终都是通过Connection对象来完成的。
(1)用SqlConnection连接SQL Server
加入命名空间:using System.Data.SqlClient;
连接数据库: string conString = "data source=IP地址; Database=数据库名;user id=用户名; password=密码";
SqlConnection myconnection = new SqlConnection(conString);
myconnection.open();
(2)用OracleConnection连接Oracle
加入命名空间:using System.Data.OracleClient;
连接数据库: string conString = "data source=IP地址; Database=数据库名;user id=用户名; password=密码";
OracleConnection myconnection = new OracleConnection(conString);
myconnection.open();
(3)用 MySqlConnection连接MySQL
在.NET中连接MySQL数据库有两种方法:MySQL Connector/ODBC 和 MySQL Connector/NET,ODBC连接器是符合ODBC标准的交互平台,是.NET访问MySQL数据库最好的选择。
首先,需要下载安装MySql-connector-net-5.1.5.Data.msi这个组件。如果是默认安装,则可以在C:\Program Files\MySQL\MySQL Connector Net 5.1.5\Binaries\.NET2.0中找到MySql.Data.dll,将该文件复制到项目的bin目录下。并且在项目中添加引用MySql.Data.dll。实现代码如下:
加入命名空间:using MySql.Data.MySqlClient;
连接数据库: string conString = "server=IP地址; Database=数据库名;user id=用户名; password=密码";
MySqlConnection myconnection = new MySqlConnection(conString);
myconnection.open();
(4)用OleDbConnection连接各种数据源
由于数据源不同,相应的连接字符串也会不同。
加入命名空间:using System.Data.OleDb;
连接 SQL Server: string conString = "Provider=SQLOLEDB.1; Persist Security Info=False; user id=用户名; Database=数据库名; data source=COMPUTER; ";
OleDbConnection myconnection = new OleDbConnection(conString);
myconnection.open();
连接 Access: string conString = "Provider=Microsoft.Jet.OLEDB.4.0; data source=C:\\Database1.mdb; Persist Security Info=False;";
OleDbConnection myconnection = new OleDbConnection(conString);
myconnection.open();
(也可以通过建立.udl文件来获得字符串)
连接 Oracle: string conString = "Provider=MSDAORA; user id=用户名; password=密码; data source=db; Persist Security Info=False;";
OleDbConnection myconnection = new OleDbConnection(conString);
myconnection.open();
(也可以通过OracleConnection连接)
注意:使用不同的Connection对象需要导入不同的命名空间。OleDbConnection的命名空间为System.Data.OleDb。SqlConnection的命名空间为System.Data.SqlClient。OracleConnection的命名空间为System.Data.OracleClinet。

C#如何调用SQL数据库8

对于不同的.NET数据提供者,ADO.NET采用不同的Connection对象连接数据库。这些Connection对象为我们屏蔽了具体的实现细节,并提供了一种统一的实现方法。
Connection类有四种:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection。
SqlConnection类的对象连接SQL Server数据库;OracleConnection 类的对象连接Oracle数据库;OleDbConnection类的对象连接支持OLE DB的数据库,如Access;而OdbcConnection类的对象连接任何支持ODBC的数据库。与数据库的所有通讯最终都是通过Connection对象来完成的。
(1)用SqlConnection连接SQL Server
加入命名空间:using System.Data.SqlClient;
连接数据库: string conString = "data source=IP地址; Database=数据库名;user id=用户名; password=密码";
SqlConnection myconnection = new SqlConnection(conString);
myconnection.open();
(2)用OracleConnection连接Oracle
加入命名空间:using System.Data.OracleClient;
连接数据库: string conString = "data source=IP地址; Database=数据库名;user id=用户名; password=密码";
OracleConnection myconnection = new OracleConnection(conString);
myconnection.open();
(3)用 MySqlConnection连接MySQL
在.NET中连接MySQL数据库有两种方法:MySQL Connector/ODBC 和 MySQL Connector/NET,ODBC连接器是符合ODBC标准的交互平台,是.NET访问MySQL数据库最好的选择。
首先,需要下载安装MySql-connector-net-5.1.5.Data.msi这个组件。如果是默认安装,则可以在C:\Program Files\MySQL\MySQL Connector Net 5.1.5\Binaries\.NET2.0中找到MySql.Data.dll,将该文件复制到项目的bin目录下。并且在项目中添加引用MySql.Data.dll。实现代码如下:
加入命名空间:using MySql.Data.MySqlClient;
连接数据库: string conString = "server=IP地址; Database=数据库名;user id=用户名; password=密码";
MySqlConnection myconnection = new MySqlConnection(conString);
myconnection.open();
(4)用OleDbConnection连接各种数据源
由于数据源不同,相应的连接字符串也会不同。
加入命名空间:using System.Data.OleDb;
连接 SQL Server: string conString = "Provider=SQLOLEDB.1; Persist Security Info=False; user id=用户名; Database=数据库名; data source=COMPUTER; ";
OleDbConnection myconnection = new OleDbConnection(conString);
myconnection.open();
连接 Access: string conString = "Provider=Microsoft.Jet.OLEDB.4.0; data source=C:\\Database1.mdb; Persist Security Info=False;";
OleDbConnection myconnection = new OleDbConnection(conString);
myconnection.open();
(也可以通过建立.udl文件来获得字符串)
连接 Oracle: string conString = "Provider=MSDAORA; user id=用户名; password=密码; data source=db; Persist Security Info=False;";
OleDbConnection myconnection = new OleDbConnection(conString);
myconnection.open();
(也可以通过OracleConnection连接)
注意:使用不同的Connection对象需要导入不同的命名空间。OleDbConnection的命名空间为System.Data.OleDb。SqlConnection的命名空间为System.Data.SqlClient。OracleConnection的命名空间为System.Data.OracleClinet。

ado。net是干什么的,里面都有哪些对象呢,谢谢

以前曾经用过Oracle+ExtJS进行项目开发,可能接触的很少,感觉和Sqlserver数据库大同小异,

就我自己而言,很多项目一般基于Ado.Net+Sqlserver2008 R2这一套(用过的Entity FrameWork实体框架(ORM)底层也是基于Ado.Net去访问数据库).

现在我自己写一个用Ado.Net访问Oracle数据库的一点点代码(还不完整,以后会补全基本的常用操作功能),我自己的思路是从简单三层一点点往抽象模式进行编写

 

首先定义的UserInfo是从oracle数据库映射的一个实体对象,在数据访问层中以UserInfoDal形式继承至BaseDal<T>泛型父类和一个关于对于List操作的泛型接口,

代码如下:

技术分享

GetListByWhere()和GetListByWhere(string where)实现基本一致,DataReaderToList(OracleDataReader dr)和DataSetToList(DataSet ds)思路一样(ListAction<T>的东西),其中实现代码如下:

  public List<UserInfo> GetListByWhere()
        {
            OracleConnection conn = DbAction.getConn();
            string sqlStr = "select * from userinfo t";
            OracleCommand com = new OracleCommand(sqlStr, conn);
            conn.Open();
            OracleDataReader dr = com.ExecuteReader();
            List<UserInfo> list = DataReaderToList(dr);
            conn.Close();
            return list;
        }

   public List<UserInfo> DataReaderToList(OracleDataReader dr)
        {
            try
            {
                List<UserInfo> list = null;
                while (dr.Read())
                {
                    list = new List<UserInfo>();
                    UserInfo t = new UserInfo();
                    t.Fid = int.Parse(dr.GetOracleNumber(0).ToString());
                    t.Fname = dr.GetOracleString(1).ToString();
                    t.Fpassword = dr.GetOracleString(2).ToString();
                    list.Add(t);
                }
                return list;
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                dr.Close();
            }
        }

其中会涉及到一个DbAction类,可以封装一些数据库连接关闭等的对象以及方法:

 public static class DbAction
    {
        private readonly static string connString = System.Configuration.ConfigurationManager.ConnectionStrings["connString"].ToString();


        public static OracleConnection getConn()
        {
            OracleConnection conn = new OracleConnection(connString);
            return conn;
        }

      //.....可以继续补充

    }

回归正题,正常的通用逻辑应该归于在BaseDal<T>泛型父类中进行实现

技术分享

其中TableName,PrimaryKey字段属性和泛型T的实体对象,将在进行通用sql语句编程时起到作用.

BaseDal<T>实现BaseAction<T>接口的方法,并约束T在BaseModel,且允许进行new操作

实现的Delete方法代码如下:

   public bool Delete(string id)
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendFormat("delete from {0} where {1}=:id",TableName,PrimaryKey);


            OracleConnection conn = DbAction.getConn();
            OracleCommand com = new OracleCommand(sb.ToString(), conn);
            com.Parameters.Add(DbHelper.CreateParam("id", string.IsNullOrEmpty(id) ? "0" : id));
            conn.Open();
            int i=com.ExecuteNonQuery();
            conn.Close();
            if(i>0)
            {
                return true;
            }
            return false;
        }

需要注意的是,在BaseModel也需要要有TableName,PrimaryKey等(以后会添加其他字段属性),并且在Model中自己定义的映射实体对象必须指定PrimaryKey

技术分享

GetListByWhere()和GetListByWhere(string where)实现基本一致,DataReaderToList(OracleDataReader dr)和DataSetToList(DataSet ds)思路一样(ListAction<T>的东西),其中实现代码如下:

  public List<UserInfo> GetListByWhere()
        {
            OracleConnection conn = DbAction.getConn();
            string sqlStr = "select * from userinfo t";
            OracleCommand com = new OracleCommand(sqlStr, conn);
            conn.Open();
            OracleDataReader dr = com.ExecuteReader();
            List<UserInfo> list = DataReaderToList(dr);
            conn.Close();
            return list;
        }

   public List<UserInfo> DataReaderToList(OracleDataReader dr)
        {
            try
            {
                List<UserInfo> list = null;
                while (dr.Read())
                {
                    list = new List<UserInfo>();
                    UserInfo t = new UserInfo();
                    t.Fid = int.Parse(dr.GetOracleNumber(0).ToString());
                    t.Fname = dr.GetOracleString(1).ToString();
                    t.Fpassword = dr.GetOracleString(2).ToString();
                    list.Add(t);
                }
                return list;
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                dr.Close();
            }
        }

其中会涉及到一个DbAction类,可以封装一些数据库连接关闭等的对象以及方法:

 public static class DbAction
    {
        private readonly static string connString = System.Configuration.ConfigurationManager.ConnectionStrings["connString"].ToString();


        public static OracleConnection getConn()
        {
            OracleConnection conn = new OracleConnection(connString);
            return conn;
        }

      //.....可以继续补充

    }

回归正题,正常的通用逻辑应该归于在BaseDal<T>泛型父类中进行实现

技术分享

其中TableName,PrimaryKey字段属性和泛型T的实体对象,将在进行通用sql语句编程时起到作用.

BaseDal<T>实现BaseAction<T>接口的方法,并约束T在BaseModel,且允许进行new操作

实现的Delete方法代码如下:

   public bool Delete(string id)
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendFormat("delete from {0} where {1}=:id",TableName,PrimaryKey);


            OracleConnection conn = DbAction.getConn();
            OracleCommand com = new OracleCommand(sb.ToString(), conn);
            com.Parameters.Add(DbHelper.CreateParam("id", string.IsNullOrEmpty(id) ? "0" : id));
            conn.Open();
            int i=com.ExecuteNonQuery();
            conn.Close();
            if(i>0)
            {
                return true;
            }
            return false;
        }

需要注意的是,在BaseModel也需要要有TableName,PrimaryKey等(以后会添加其他字段属性),并且在Model中自己定义的映射实体对象必须指定PrimaryKey

技术分享二、开始连接数据库:ADOConnectionConn=newADOConnection(strConn);三、执行一个selectSQL查询:stringstrSQL="Selectidfromtest";ADOCommandADOCmd=newADOCommand(conn,Conn);Conn.Open();ADODataReaderreader;ADOCmd.Execute(outreader);四、得到ADODataReader中包含的数据:先执行:reader.Read();然后就可以取得数值:reader["id"].ToString();依次类推。五、delete(删除)语句,insert和update相同:strSQL="deletefromtestwhereid=’1’";//strSQL="insertintotestvalues(’1’)";//strSQL="updatetestsetid=’1’";ADOCommandADOCmd=newADOCommand(conn,Conn);Conn.Open();ADOCmd.Execute();

请教vb如何连接oracle数据库

VB6.0可通过Adodc数据访问控件的属性页进行连接Oracle数据库。

1)建立数据工程,在窗体添加Adodc数据访问控件。鼠标选中Adodc控件-右键-Adodc属性-使用连接字符串-生成。

2)选Microsoft OLE DB Provider For Oracle,下一步。

3)根据数据链接属性对话框填写所需内容,测试连接。点确定,最终在Adodc属性页获得连接字符串,复制该字符串,即可作为Adodc数据访问控件直接使用,或在代码中用于Adodc控件或ADO数据访问对象。

显示全文