怎么依次怎么访问oracle数据库dataadapter

[ASP.NET] .Net中使用OracleDataAdapter | IT知识库
-& 正文阅读
[ASP.NET].Net中使用OracleDataAdapter
.Net中使用OracleDataAdapter
本来只想简单记录一下OracleDataAdapter的批量增加和修改用法的,在园子里看到一篇比较详细的就在这分享了(Oracle Data Provider for .NET),虽然用的是&Update(DataSet dataSet, string srcTable);,其实都差不多;dataSet为新数据集,srcTable为对应数据库表名值得提一句的就是,对于新的DataTable数据,根据情况要使用AcceptChanges();方法,然后设置表中每行数据状态,如修改数据操作foreach (DataRow dr in data.Rows){if (dr.RowState == DataRowState.Unchanged)dr.SetModified();}然后再用Update(DataTable dataTable)使用前保证新DataTabele用AcceptChanges();方法保存了
1 public static bool MultiUpdateData(DataTable data, string Columns, string tableName)
using (OracleConnection connection = new OracleConnection(connStr))
string SQLString = string.Format("select {0} from {1} where rownum=0", Columns, tableName);
using (OracleCommand cmd = new OracleCommand(SQLString, connection))
connection.Open();
OracleDataAdapter myDataAdapter = new OracleDataAdapter();
myDataAdapter.SelectCommand = new OracleCommand(SQLString, connection);
OracleCommandBuilder custCB = new OracleCommandBuilder(myDataAdapter);
custCB.ConflictOption = ConflictOption.OverwriteC
custCB.SetAllValues = true;
foreach (DataRow dr in data.Rows)
if (dr.RowState == DataRowState.Unchanged)
dr.SetModified();
myDataAdapter.Update(data);
data.AcceptChanges();
myDataAdapter.Dispose();
return true;
catch (System.Data.OracleClient.OracleException E)
connection.Close();
return false;
}Oracle批量修改一下是链接文章,抄在这是怕丢失吧(多虑了)1. 通过DataAdapter访问数据库&&&&&&&&&DataAdapter有四个属性SelectCommand,DeleteCommand,InsertCommand,UpdateCommand&&&&&&&&&&&&&&1.1 当做检索处理的时候, 执行SelectCommand的操作,返回数据集。&&&&// C# 例子&using Susing System.Dusing System.Xusing Oracle.DataAccess.Cclass testSample{static void Main(){&&&&&//数据库连接打开&&&& OracleConnection con = new OracleConnection();&&&& con.ConnectionString = "User Id=Password=Data Source=";&&&& con.Open();&&&& Console.WriteLine("Connected Successfully");&&&& // Create the command&&& // sql文&&&& OracleCommand cmd = new OracleCommand("", con);&&&&&&&&//select statement&&&& string strSelectSql = "SELECT STU_ID, STU_NAME, AGE, BIRTHDAY, SEX FROM TBL_STUDENT " +&&&&& " WHERE& SEX = :I_SEX AND& BIRTHDAY &= :I_BIRTHDAY AND AGE = :I_AGE ";&&&&&//command和检索sql文 关联&&&& mandText = strSelectS&&&&&&&&//sql文中变量通过oracle参数传递&& OracleParameter oraP&& oraParameter = new OracleParameter("I_SEX",OracleDbType.Varchar2, 2);&& oraParameter.Value = "01";&& cmd.Parameters.Add(oraParameter);//字符型&& oraParameter = new OracleParameter("I_BIRTHDAY",OracleDbType.Date);//日期型&& oraParameter.Value = "";&& cmd.Parameters.Add(oraParameter);&& oraParameter = new OracleParameter("I_AGE",OracleDbType.Int32);&& oraParameter.Value = 20;&& cmd.Parameters.Add(oraParameter);&&&& DataSet dtTmp = new DataSet();&&&& using(OracleDataAdapter dataAdapter = new OracleDataAdapter())&&&& {&&&&& dataAdapter.SelectCommand =//检索command设置&&&&& dataAdapter.Fill(dtTmp);//检索结果保存在dtTmp数据集中&&&& }&&&& //&&&& Console.WriteLine("Number of rows : {0} ", dtTmp.Tables[0].Rows.Count);&&&& // Close and Dispose OracleConnection object&&&& con.Close();&&&& con.Dispose();}1.2 && 如果sql文只是想count(*) 获得数据库中记录件数,可以直接使用OracleCommand.ExecuteScalar()来快速取得。&// C# 例子Cmd = new OracleCommand( "SELECT COUNT(*) FROM TBL_STUDENT", Conn );Object o = Cmd.ExecuteScalar();int nRecordCount = Convert.ToInt32(o.ToString());1.3& 当做更新处理的时候,调用 OracleDataAdapter 的Update方法,对输入参数DataTable中每行进行循环,&&& 根据当前行的状态调用相应的 INSERT、UPDATE 或 DELETE 语句。RowState属性相关处理的OracleCommandDataRowState.Added 该行已添加& :InsertCommandDataRowState.Deleted 该行已删除 :DeleteCommandDataRowState.Modified 该行已被修改 :UpdateCommand// C# 例子&using Susing System.Dusing System.Xusing Oracle.DataAccess.Cclass testSample{public void updateStuData(DataSet i_Data){&&&& //数据库连接打开int nRecCount = 0;OracleConnection con = new OracleConnection();con.ConnectionString = "User Id=Password=Data Source=";con.Open();Console.WriteLine("Connected Successfully");// Create the command// sql文OracleCommand cmdUpdate = new OracleCommand("", con);// sql文OracleCommand cmdDelete = new OracleCommand("", con);// sql文OracleCommand cmdInsert = new OracleCommand("", con);//select statementstring strUpdateSql = "UPDATE TBL_STUDENT SET STU_NAME = :I_STU_NAME& WHERE& STU_ID = :I_STU_ID ";string strDeleteSql = "DELETE FROM TBL_STUDENT& WHERE& STU_ID = :I_STU_ID";string strInsertSql = "INSERT TBL_STUDENT VALUES (:I_STU_ID, :I_STU_NAME, :I_AGE,:I_BIRTHDAY, :I_SEX )";//command和检索sql文 关联<mandText = strUpdateS<mandText = strDeleteS<mandText = strInsertS//sql文中变量通过oracle参数传递OracleParameter oraP//当设置参数的时候//oracle参数值可通过SourceColumn属性与更新数据行的字段绑定//取得数据值的版本可通过SourceVersion来设定。//DataRowVersion.Current 取得数据行中修改后的数据值//DataRowVersion.Original 取得数据行中原始的数据值//Where条件里面的参数值往往设置为取DataRowVersion.Original版本//更新或者插入的参数值往往设置为取DataRowVersion.Current版本//--------------------------------------------------//更新用的oracle commandoraParameter = new OracleParameter("I_STU_NAME", OracleDbType.Varchar2, 20);oraParameter.SourceColumn = "STU_NAME";//更新字段值oraParameter.SourceVersion = DataRowVersion.CcmdUpdate.Parameters.Add(oraParameter);oraParameter = new OracleParameter("I_STU_ID", OracleDbType.Varchar2, 5);oraParameter.SourceColumn = "STU_ID";//检索字段值oraParameter.SourceVersion = DataRowVersion.OcmdUpdate.Parameters.Add(oraParameter);//--------------------------------------------------//删除用的oracle commandoraParameter = new OracleParameter("I_STU_ID", OracleDbType.Varchar2, 5);oraParameter.SourceColumn = "STU_ID";//检索字段值oraParameter.SourceVersion = DataRowVersion.OcmdDelete.Parameters.Add(oraParameter);//--------------------------------------------------//追加用的oracle commandoraParameter = new OracleParameter("I_STU_ID", OracleDbType.Varchar2, 5);oraParameter.SourceColumn = "STU_ID";oraParameter.SourceVersion = DataRowVersion.CcmdInsert.Parameters.Add(oraParameter);oraParameter = new OracleParameter("I_STU_NAME", OracleDbType.Varchar2, 20);oraParameter.SourceColumn = "STU_NAME";oraParameter.SourceVersion = DataRowVersion.CcmdInsert.Parameters.Add(oraParameter);oraParameter = new OracleParameter("I_AGE", OracleDbType.Int32);oraParameter.SourceColumn = "AGE";oraParameter.SourceVersion = DataRowVersion.CcmdInsert.Parameters.Add(oraParameter);oraParameter = new OracleParameter("I_BIRTHDAY", OracleDbType.Date);oraParameter.SourceColumn = "BIRTHDAY";oraParameter.SourceVersion = DataRowVersion.CcmdInsert.Parameters.Add(oraParameter);oraParameter = new OracleParameter("I_SEX", OracleDbType.Varchar2, 2);oraParameter.SourceColumn = "SEX";oraParameter.SourceVersion = DataRowVersion.CcmdInsert.Parameters.Add(oraParameter);using(OracleDataAdapter dataAdapter = new OracleDataAdapter()){&dataAdapter.InsertCommand= cmdU//追加command设置&dataAdapter.DeleteCommand= cmdD//删除command设置&dataAdapter.UpdateCommand= cmdI//更新command设置&nRecCount = dataAdapter.Update(i_Data, "TBL_STUDENT");//数据更新}Console.WriteLine("Number of Update rows : {0} ", nRecCount);// Close and Dispose OracleConnection objectcon.Close();con.Dispose();}&&//执uc2 行结果//例如://参数i_Data的TBL_STUDENT表中数据为://----------------------------------------------------------------------------------------------//--| STU_ID&&&& | STU_NAME&&&&&&&&&&& |& AGE& | BIRTHDAY&& | SEX | RowState//--| 00001&&&&& | aaaaaaaaaa&&&&&&&&& |& 18&& |
|& 01 | DataRowState.Modified//--| 00002&&&&& | bbbbbbbbbb&&&&&&&&& |& 19&& |
|& 01 | DataRowState.Modified//--| 00003&&&&& | cccccccccc&&&&&&&&& |& 17&& |
|& 00 | DataRowState.Deleted&//--| 00004&&&&& | dddddddddd&&&&&&&&& |& 18&& |
|& 01 | DataRowState.Modified//--| 00005&&&&& | eeeeeeeeee&&&&&&&&& |& 19&& |
|& 00 | DataRowState.Added&//--| 00006&&&&& | ffffffffff&&&&&&&&& |& 17&& |
|& 01 | DataRowState.Added&//----------------------------------------------------------------------------------------------在执行dataAdapter.Update(i_Data, "TBL_STUDENT")的数据更新后,update方法内部自动循环表中记录STU_ID{0,00004}执行更新操作STU_ID{0}&&&&&& 执行插入操作STU_ID{00003}&&&&&&&&&&&&& 执行删除操作并且相应的sql文中的oracle变量与记录行的相应字段值填入。1.4 但是在表的字段较多的情况下,sql文会比较冗长,对应的oracle paramter也很多,如果都是通过手动写代码来实装,&&& 处理方法就显得非常麻烦,代码量也很大。如果我们是对全表做更新的话,就可以改用OracleCommandBuilder类来简单实现。// C# 例子&using(OracleDataAdapter dataAdapter = new OracleDataAdapter()){&&//dataAdapter的SelectCommand中检索SQL文设定&dataAdapter.SelectCommand& = new OracleCommand("SELECT * FROM TBL_STUDENT", cnn);&//根据SelectCommand中检索SQL文,OracleCommandBuilder 将自动生成dataAdapter相应的&//UPDATE, INSERT, DELETE 用SQL文,并且oracle paramter也相应填入。&OracleCommandBuilder commandBuilder = new OracleCommandBuilder(dataAdapter);&nRecCount = dataAdapter.Update(i_Data, "TBL_STUDENT");//数据更新&}关于OracleCommandBuilder 自动生成的SQL文,我们可以通过上述例子来详细说明:假如 TBL_STUDENT由STU_ID,STU_NAME,AGE,BIRTHDAY,SEX这几个字段。那么 自动生成的Update用SQL文为:--------------------------------------------------UPDATE TBL_STUDENT SET&&&&& STU_ID = :CURRENT_STU_ID,&&&& STU_NAME = :CURRENT_STU_NAME,&&&& AGE = :CURRENT_AGE ,&&&& BIRTHDAY = :CURRENT_BIRTHDAY,&&&& SEX = :CURRENT_SEXWHERE& STU_ID = :ORIGINAL_STU_ID AND&&&&& STU_NAME = :ORIGINAL_STU_NAME AND&&&&& AGE = :ORIGINAL_AGE& AND&&&&& BIRTHDAY = :ORIGINAL_BIRTHDAY AND&&&&& SEX = :ORIGINAL_SEX//更新字段的参数值的版本为Current.oraParameter = new OracleParameter("CURRENT_STU_ID", OracleDbType.Varchar2, 5);oraParameter.SourceColumn = "STU_ID";oraParameter.SourceVersion = DataRowVersion.CcmdUpdate.Parameters.Add(oraParameter);oraParameter = new OracleParameter("CURRENT_STU_NAME", OracleDbType.Varchar2, 20);oraParameter.SourceColumn = "STU_NAME";oraParameter.SourceVersion = DataRowVersion.CcmdUpdate.Parameters.Add(oraParameter);oraParameter = new OracleParameter("CURRENT_AGE", OracleDbType.Int32);oraParameter.SourceColumn = "AGE";oraParameter.SourceVersion = DataRowVersion.CcmdUpdate.Parameters.Add(oraParameter);oraParameter = new OracleParameter("CURRENT_BIRTHDAY", OracleDbType.Date);oraParameter.SourceColumn = "BIRTHDAY";oraParameter.SourceVersion = DataRowVersion.CcmdUpdate.Parameters.Add(oraParameter);oraParameter = new OracleParameter("CURRENT_SEX", OracleDbType.Varchar2, 2);oraParameter.SourceColumn = "SEX";oraParameter.SourceVersion = DataRowVersion.CcmdUpdate.Parameters.Add(oraParameter);//检索字段的参数值的版本为Origianl.oraParameter = new OracleParameter("ORIGINAL_STU_ID", OracleDbType.Varchar2, 5);oraParameter.SourceColumn = "STU_ID";oraParameter.SourceVersion = DataRowVersion.OcmdUpdate.Parameters.Add(oraParameter);oraParameter = new OracleParameter("ORIGINAL_STU_NAME", OracleDbType.Varchar2, 20);oraParameter.SourceColumn = "STU_NAME";oraParameter.SourceVersion = DataRowVersion.OcmdUpdate.Parameters.Add(oraParameter);oraParameter = new OracleParameter("ORIGINAL_AGE", OracleDbType.Int32);oraParameter.SourceColumn = "AGE";oraParameter.SourceVersion = DataRowVersion.OcmdUpdate.Parameters.Add(oraParameter);oraParameter = new OracleParameter("ORIGINAL_BIRTHDAY", OracleDbType.Date);oraParameter.SourceColumn = "BIRTHDAY";oraParameter.SourceVersion = DataRowVersion.OcmdUpdate.Parameters.Add(oraParameter);oraParameter = new OracleParameter("ORIGINAL_SEX", OracleDbType.Varchar2, 2);oraParameter.SourceColumn = "SEX";oraParameter.SourceVersion = DataRowVersion.OcmdUpdate.Parameters.Add(oraParameter);--------------------------------------------------依次类推,delete 和 insert的sql文也可以同样原理自动生成。1.5 另外,使用OracleDataAdapter时,不要误以为只能对update的参数表做处理,其实工作原理是循环参数表中的记录,并且设置相应的oracle paramter.执行相应的sql文。所以,有时候可以通过设置sql文做不同的操作,下面例子是往表TBL_CLASS_STU中插入相应记录。记录的STU_ID,STU_NAME 取自参数TBL_STUDENT的字段。CLASS_ID为固定值'001' ,CLASS_NAME通过检索TBL_CLASS 来取得。// C# 例子&using(OracleDataAdapter dataAdapter = new OracleDataAdapter()){&&&& mandText& =&&&" INSERT INTO TBL_CLASS_STU( " +&&&& &" CLASS_ID,&&&&&& "+&&& &" CLASS_NAME,&&& "+&&& &" STU_ID, "+&&& &" STU_NAME )"+&&& " SELECT&&&& "+&&& &" '001' ,&&&& "+&&& &" CLASS_NAME, "+&&& &" :I_STU_IDO,"+&&& &" :I_STU_NAME "+&&& " FROM TBL_CLASS "+&&&& " WHERE& CLASS_ID = '001' ";&&& OracleParameter oraP&&&& oraParameter = new OracleParameter("CURRENT_STU_ID", OracleDbType.Varchar2, 5);&&& oraParameter.SourceColumn = "STU_ID";&&& oraParameter.SourceVersion = DataRowVersion.C&&& cmdInsert.Parameters.Add(oraParameter);&&&&&&& oraParameter = new OracleParameter("CURRENT_STU_NAME", OracleDbType.Varchar2, 20);&&& oraParameter.SourceColumn = "STU_NAME";&&& oraParameter.SourceVersion = DataRowVersion.C&&& cmdInsert.Parameters.Add(oraParameter);&&&&&&& dataAdapter.InsertCommand= cmdU//追加command设置&&& nRecCount = dataAdapter.Update(i_Data, "TBL_STUDENT");//数据更新&}&前面用OracleDataAdapter访问DB,需要DataSet参数做对应操作。但是在实行固定sql文或者存储过程的时候,我们可以采用OracleCommand 的ExecuteNonQuery()方法。2.1 执行sql文的时候,很简单,只要设置OracleCommand 的CommandText。执行即可。C#例<mandText = "update emp set sal = sal + .01 where empno=7934";int rowsUpdated = cmd.ExecuteNonQuery();2.2 这里主要想归纳一下通过OracleCommand调用存储过程的方法。首先设置CommandText属性为存储过程的名称。注意带package名其次将CommandType 属性设为mandType.StoredProcedure然后填入相应的参数。参数可以为oracle的各种类型。通过下面例子说明如何调用oracle的数组参数和cursor参数。//PL/SQL//--------------------------------------------------------//Oracle服务器上 存储过程//包含三个参数。//I_ID 输入参数& VARCHAR2 类型//I_TBL 输入参数 VARCHAR(10) 型的数组//O_CUR 输出参数 cursor 类型CREATE OR REPLACE PACKAGE JK_WAIN_0203.PKG_TEST IS&TYPE TYPE_TAB_111 IS TABLE OF VARCHAR(10) INDEX BY BINARY_INTEGER;&PROCEDURE PROC_GET_DATA(&&&&&& &I_ID IN VARCHAR2, //&&&&&&& I_TBL&IN TYPE_TAB_111,&&&&&&& O_CUR &OUT SYS_REFCURSOR);END PKG_TEST;/CREATE OR REPLACE PACKAGE BODY JK_WAIN_0203.PKG_TEST IS&PROCEDURE PROC_GET_DATA(&&&&&&&&& I_ID IN VARCHAR2,&&&&&&&& &I_TBL&IN TYPE_TAB_111,&&&&&&& &O_CUR &OUT SYS_REFCURSOR)&IS&&&&&&&& V_INDEX&NUMBER := 0;&&&&&&&&&V_INDEX_MAX&NUMBER := 0;&&&&&&&&&&&V_DATA&&VARCHAR(10);&BEGIN&&&&&&&&&&&V_INDEX := I_TBL.FIRST;&&&&&&&&&&&V_INDEX_MAX := I_TBL.LAST;&&&&&&&&&&&WHILE V_INDEX &= V_INDEX_MAX LOOP&&&&&&&&&&&&&&&&&&&&&&V_DATA := I_TBL(V_INDEX);&&&&&&&&&&&&&&&&&&&&&&V_INDEX := V_INDEX + 1;&&&&&&&&&&&END LOOP;&&&&&&&&&&&OPEN O_CUR FOR SELECT * FROM TAB WHERE ROWNUM & 10;&END PROC_GET_DATA;END PKG_TEST;/---------------------------------------------------------------------------//C#例public void Get_PrecedureData(){&OracleConnection connection =//Connection&OracleCommand oraCommand = new OracleCommand();&OracleParameter paramId&=&&OracleParameter paramTbl =&OracleParameter paramCur =&OracleRefCursor pInfoCur =&DataSet dtRtn = new DataSet();&//数据库连接&connection = new OracleConnection("User Id=Password=Data Source=oracle");&connection.Open();&oraCommand.Connection =&oraCommand.Parameters.Clear();&// 存储过程 设定&mandText = "PKG_TEST.PROC_GET_DATA";&mandType = mandType.StoredP&// 输入输出参数设定&// Varchar2型&paramId = oraCommand.Parameters.Add( "I_ID", OracleDbType.Varchar2, ParameterDirection.Input );&// 数组类型参数设定&paramTbl = oraCommand.Parameters.Add( "I_TBL", OracleDbType.Varchar2, ParameterDirection.Input );&&&&&&// 将CollectionType 设为 PLSQLAssociativeArray&paramTbl.CollectionType = OracleCollectionType.PLSQLAssociativeA&//cursor 类型参数设定&paramCur = oraCommand.Parameters.Add("O_CUR", OracleDbType.RefCursor, ParameterDirection.Output );&//设置参数数组的大小&//注意:参数的Value 属性和ArrayBindSize 属性必须为元素个数相同的数组,且个数等于参数的Size 属性&int[] bindSize = new int[10];&string[] tblData = new string[10];&&for(int ii = 0; ii & 10; ii++)&&{&&tblData[ii] = ii.ToString();//数值&&bindSize[ii] = 10;//数值的大小&}&//数组参数设定&paramTbl.Value = tblD&&paramTbl.Size = 10;&&&&paramTbl.ArrayBindSize = bindS&//存储过程执行&oraCommand.ExecuteNonQuery();&//out的cursor值的读取&using(OracleDataAdapter da = new OracleDataAdapter())&{&&if(paramCur.Value != System.DBNull.Value)&&&{&&&pInfoCur = (OracleRefCursor)paramCur.V&&&da.Fill(dtRtn, pInfoCur);&&}&&//取得记录数&&Console.WriteLine("the number of record count is {0}", dtRtn.Tables[0].Rows.Count);&}&oraCommand.Dispose();&connection.Close();&connection.Dispose();}
加: 19:26:30&
更: 07:24:24&
&&网站联系: qq: email:&1014人阅读
数据库(20)
今天调试程序,搞了半天,没发现问题在哪儿,最后突然发现,OracleDataAdapter.Fill()一直处于等待中,这&#23612;玛,查询的结
果集才几条数据啊,怎么会这样???sql语句在plsql里面执
行无误,哎,不知如何是好,网上也没查到具体原因。
先记录在这里。
—华丽的分割线——终于解决啦!!!———见下——
情形:OracleDataAdapter.Fill() &或者datareader 均不能查询出数据,结果仔细检查,发现sql语句中查询的某两个字段去掉后,就可以正常查询了,于是,问题肯定就是出在那两个字段上,但看了那两个字段的类型和属性,貌&#20284;没发现什么异常啊,于是只有将整张表中的数据清空,再将那两个字段从表中删掉,之后,从新编辑表,加上那两个字段,之后,问题解决了,一切OK!
总结:这个问题出的莫名其妙,只有一种解释:数据库迁移过程中出了点问题。(几天前我刚把数据库迁移到这台测试服务器)
------情况又出现了续集,就在上面写的解决方案第二天,又莫名奇妙的出现了查不出数据的问题,这下终于搞明白了,问题是出在那两个字段,但不是由于数据库迁移造成的,而是程序在写入数据库时,将异常&#20540;或非法&#20540;写入了这两个字段,导致查询不出来,额的个神------
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:80631次
积分:1992
积分:1992
排名:第18361名
原创:122篇
转载:13篇
评论:16条
(2)(2)(10)(4)(2)(2)(2)(1)(2)(1)(1)(1)(5)(3)(6)(8)(1)(5)(1)(1)(4)(2)(9)(1)(6)(1)(5)(5)(6)(8)(5)(2)(3)(7)(2)(5)(3)(1)2191人阅读
数据库相关(19)
使用oracle的ODP.NET是官方推荐,而且相对简单的方法。
官方指导文档:
app.config
&?xml version=&1.0&?&
&configuration&
&appSettings&
&add key=&ORACLE& value=&Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.133)(PORT=1521))(CONNECT_DATA=(SID=yy)));User Id=Password=&/&
&/appSettings&
&startup&&supportedRuntime version=&v4.0& sku=&.NETFramework,Version=v4.0&/&&/startup&&/configuration&
Form1.aspx.cs
using System.Collections.G
using System.D
using System.D
using System.T
using System.Windows.F
using System.C
using System.C
using Oracle.DataAccess.C
namespace JiaJiayue
public partial class Form1 : Form
public Form1()
InitializeComponent();
string connstring =
ConfigurationSettings.AppSettings[&ORACLE&];
//private DataGridView dataGridView1 = new DataGridView();
private BindingSource bindingSource1 = new BindingSource();
private OracleDataAdapter dataAdapter = new OracleDataAdapter();
//string connstring = &Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.133)(PORT=1521))(CONNECT_DATA=(SID=yy)));User Id=Password=&;
private void btnSearch_Click(object sender, EventArgs e)
dataGridView1.DataSource = bindingSource1;
if (txtName.Text == &&)
GetData(&select
tbm_psndoc.timecardid,psnname,deptname
from tbm_psndoc left join bd_psndoc on tbm_psndoc.pk_psndoc=bd_psndoc.pk_psndoc left join bd_deptdoc on bd_psndoc.pk_deptdoc=bd_deptdoc.pk_deptdoc&);
GetData(&select
tbm_psndoc.timecardid,psnname,deptname
from tbm_psndoc left join bd_psndoc on tbm_psndoc.pk_psndoc=bd_psndoc.pk_psndoc left join bd_deptdoc on bd_psndoc.pk_deptdoc=bd_deptdoc.pk_deptdoc where psnname='& + txtName.Text + &'&);
private void GetData(string selectCommand)
// Create a new data adapter based on the specified query.
dataAdapter = new OracleDataAdapter(selectCommand, connstring);
// Create a command builder to generate SQL update, insert, and
// delete commands based on selectCommand. These are used to
// update the database.
OracleCommand commandBuilder = new OracleCommand();
// Populate a new data table and bind it to the BindingSource.
DataTable table = new DataTable();
table.Locale = System.Globalization.CultureInfo.InvariantC
dataAdapter.Fill(table);
bindingSource1.DataSource =
// Resize the DataGridView columns to fit the newly loaded content.
dataGridView1.AutoResizeColumns(
DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
private void 更新ToolStripMenuItem1_Click(object sender, EventArgs e)
Form2 formone = new Form2();
formone.Show();
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:613505次
积分:6709
积分:6709
排名:第3203名
原创:131篇
转载:37篇
评论:136条
(1)(1)(1)(4)(1)(1)(1)(1)(2)(1)(4)(1)(3)(1)(2)(1)(1)(1)(5)(1)(8)(2)(8)(8)(2)(2)(2)(2)(1)(1)(4)(1)(1)(5)(8)(3)(3)(2)(2)(4)(3)(3)(16)(17)(2)(2)(3)(7)(8)(4)

我要回帖

更多关于 远程访问oracle数据库 的文章

 

随机推荐