using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;
using System.Data.OracleClient;
//using Oracle.DataAccess;
//using Oracle.DataAccess.Types;
//using Oracle.DataAccess.Client;
namespace NewUserInstall
{
public class DBAccess
{
private static OracleConnection OraConn;
private static OracleCommand OraCmd;
public static string dbName;//DB名称
public static string dbUser;//DB连接用户
public static bool DBConnect(string puser,string pwd,string ds)
{
//DB连接
try
{
if (OraConn!= null)//如果连接没关闭,先关闭
DBClose();
string ConString = "Data Source=" + ds + ";User Id=" + puser + ";Password=" + pwd;
OraConn = new OracleConnection(ConString);
OraCmd = new OracleCommand("", OraConn);
OraConn.Open();
//dbName=OraConn.DatabaseName.ToString();
//dbName = OraConn.DataSource.ToString();
//dbUser=OraConn.GetSchema().ToString();
return true;
}
catch(Exception ex){
MessageBox.Show(ex.Message);
return false;
}
}
public static DataTable DBExecStoredProcedure(string spName, OracleParameter[] sqlParme)
{
try
{
//使用oracle的客户端DataAccess访问
OraCmd.CommandText = spName;
OraCmd.CommandType = CommandType.StoredProcedure;
OraCmd.Parameters.Clear();//先清空
foreach (OracleParameter parme in sqlParme)
{
OraCmd.Parameters.Add(parme);
}
//使用微软的ORACLE访问接口
//参数2
//sqlParme1.ParameterName = "POUT";
//sqlParme1.OracleDbType = OracleDbType.Varchar2;
//sqlParme[1] = OraCmd.Parameters.Add("POUT", OracleDbType.Varchar2);
//sqlParme.Value = "2020";
参数3
//sqlParme = OraCmd.Parameters.Add("pGoodsId", OracleType.VarChar);
//sqlParme.Direction = ParameterDirection.Input;
//sqlParme.Value = "07001";
//执行
//OraCmd.ExecuteNonQuery();
//MessageBox.Show(OraCmd.Parameters["POUT"].Value.ToString());
DataSet ds1;
DateTime EndTime;
TimeSpan sp;
ds1 = new DataSet();
DateTime BegTime = System.DateTime.Now;
OracleDataAdapter da1 = new OracleDataAdapter(OraCmd);//取出数据
da1.Fill(ds1);
EndTime = System.DateTime.Now;
string str = "spare time:" + (EndTime - BegTime).ToString();
DataTable dt = ds1.Tables[0];
if (dt != null && dt.Rows.Count != 0)
MessageBox.Show("返回记录数" + dt.Rows.Count.ToString() + "\n" + str);
return dt;
}
catch (InvalidCastException e)
{
return null;
}
}
//执行多条插入
public static bool DBExeMuSql(string[] strMSql)
{
bool br = true;
//使用oracle的客户端DataAccess访问
if (OraConn.State == ConnectionState.Closed)
OraConn.Open();
OraCmd = new OracleCommand("", OraConn);
OracleTransaction tx = OraConn.BeginTransaction();
OraCmd.Transaction = tx;
try
{
foreach (string sSql in strMSql)
{
try
{
OraCmd.CommandText = sSql;
OraCmd.ExecuteNonQuery();
}
catch(Exception e)
{
MessageBox.Show(e.Message + sSql);
throw;
}
}
tx.Commit();
br = true;
}
catch (OracleException ex)
{
br = false;
tx.Rollback();
MessageBox.Show(ex.Message);
return br;
}
return br;
}
public static DataTable DBExecSql(string strSql)
{
string strResult = "";
//使用oracle的客户端DataAccess访问
OraCmd.CommandText = strSql;
try
{
OracleDataAdapter da1 = new OracleDataAdapter(OraCmd);
DataTable dt = new DataTable();
da1.Fill(dt);
return dt;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return null;
}
}
//关闭数据库连接
public static bool DBClose()
{
try
{
if (OraConn!=null)
OraConn.Close();
return true;
}
catch
{
return false;
}
}
}
}