c#连接oracle11,C#连接远程oracle11g数据库
windows form程序開發,連接和操作oralce數據庫,可以使用.NET專門提供的Oracle.NET
framework
數據庫提供的類,該類位于System.Data.OracleClient命名空間中,并包含在System.Data.OracleClient.dll程序集中。
使用方法,在“解決方案管理器”上右鍵單擊項目名稱,選擇快捷菜單中的“添加引用”項,完成以上操作后,彈出“添加引用”對話框,選擇對話框中的.NET選項卡,然戶在.NET表中選擇System.Data.OracleClient項,并單擊“確定”按鈕保存退出,引用添加完成后,在程序中引入命名空間,按照下面的示例說明即可完成對Oracle數據庫的操作,
遠程示例:
遠程oracle數據庫中 "product\11.1.0\db_1\NETWORK\ADMIN\tnsnames.ora"
文件的配置項如下(其中chenslxp為服務器名,ip地址為192.168.198.128)
ORCL =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCP)(HOST = chenslxp)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
連接方法1.:
在"product\11.1.0\db_1\NETWORK\ADMIN\tnsnames.ora" 文件里追加連接DNS
連接方法2:
把字符串連接寫成:
Data
Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=chenslxp)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)));Persist
Security Info=True;User Id=user1; Password=1
其中的chenslxp可以ip地址替換,User Id=user1; Password=1 需要用真實用戶名和密碼替換。
C#連接遠程Oracle數據庫及示例
Windows
Form程序開發,連接和操作Oralce數據庫,可以使用.NET專門提供的Oracle.NET Framework
數據庫提供的類,該類位于System.Data.OracleClient命名空間中,并包含在System.Data.OracleClient.dll程序集中。
使用方法,在“解決方案管理器”上右鍵單擊項目名稱,選擇快捷菜單中的“添加引用”項,完成以上操作后,彈出“添加引用”對話框,選擇對話框中的.NET選項卡,然戶在.NET表中選擇System.Data.OracleClient項,并單擊“確定”按鈕保存退出,引用添加完成后,在程序中引入命名空間,按照下面的示例說明即可完成對Oracle數據庫的操作,
C#連接遠程數據庫遠程示例:
把字符串連接寫成:
Data
Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=sunday)));User
ID=sa;Password=sa
方法2:oracleConnectionString :Provider=OraOLEDB.Oracle.1;User
ID=scott;Password=tiger;Data Source=(DESCRIPTION = (ADDRESS_LIST=
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)))
(CONNECT_DATA = (SERVICE_NAME = orcl)))
方法3:oracleConnectionString:User
ID=scott;Password=tiger;Data Source=(DESCRIPTION = (ADDRESS_LIST =
(ADDRESS = (PROTOCOL =
TCP)(HOST=10.10.125.250)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))
User ID=scott;Password=tiger;Data
Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL =
TCP)(HOST=192.168.1.100)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))
Data?Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ROGNE)));Persist?Security?Info=True;User?Id=sa;?Password=sa
關于數據庫的操作
1.數據庫連接
有2種:
第一種:古老的方法(較為死板,不利于靈活操作),即用OracleConnection的類來連接
string mysqlstr ="user id = xal;data source = xal;password =
xal";
OracleConnection mycnn = new OracleConnection(mysqlstr);
mycnn.open();
第二種:新式的方法(使用較為靈活),即利用OracleConnectoinStringBuilder類來連接
OracleConnectionStringBuilder OcnnStrB = new
OracleConnectionStringBuilder;
OCnnStrB.DataSource = "xal";
OCnnStrB.UserID = "xal";
OCnnStrB.Password = "xal";
myCnn = new OracleConnection(OCnnStrB.ConnectionString);
myCnn.open();
2.事務操作
myConn.open();
OracleCommand insertComm = new
OracleCommand();
insertComm.Connection = myCnn;
insertComm.Transaction = myCnn.BeginTransaction();
try
{
事務操作語句;
insertComm.Transaction.Commit();
}
catch(exption ex)
{
insertComm.Transaction.Rollback();
MessageBox(ex.Message);
}
finally
{
myConn.close();
}
3.創建命令參數
private OracleParameter CreateOraParam(string ParamName, object
ParamValue)
{
OracleParameter Result = new OracleParameter();
Result.ParameterName = ParamName;
if (ParamValue != null)
{
Result.Value = ParamValue;
}
else
{
Result.Value = DBNull.Value;
}
return Result;
}
這樣的話,當要對數據庫操作時就可以:
insertComm.CommandText = "insert into TESTADODOTNET (ID, NAME, AGE,
PIC) values (:pID, :pName, :pAge, :pPic)";
insertComm.Parameters.Add(CreateOraParam("pID", (txtID.Text.Trim()
!= "") ? txtID.Text.Trim() : null));
insertComm.Parameters.Add(CreateOraParam("pName",
(txtName.Text.Trim() != "") ? txtName.Text.Trim() : null));
insertComm.Parameters.Add(CreateOraParam("pAge",
(txtAge.Text.Trim() != "") ? txtAge.Text.Trim() : null));
4.數據集的瀏覽(例:將結果顯示在comboBox1中)
OracleDataAdapter oda = new OracleDataAdapter(selectCommand);
DataTable newtable = new DataTable();
oda.Fill(newtable);
foreach (DataRow dr in newtable.Rows)?//共有newtable.rows.count條記錄
{
comboBox1.Items.Add(dr[0].ToString());
}
5.設置輸入只能是數字(例:現在往textBox1中輸入。如只能輸入字母的方法類似)
private void textBox1_KeyPress(object sender,
KeyPressEventArgs e)//屬性中的事件
{
e.Handled = !((Char.IsNumber(e.KeyChar)) || ((Keys)e.KeyChar ==
Keys.Back));
}
6.Form窗口關閉時引發的事件:彈出一個確定退出的對話框
private void
form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("是否退出系統?", "確認", MessageBoxButtons.YesNo,
MessageBoxIcon.Question) == DialogResult.Yes)
{
e.Cancel = false;
}
else
{
e.Cancel = true;
}
}
7.OracleParameter的用法
第一步:先創建命令參數
private OracleParameter CreateOraParam(string ParamName, object
ParamValue)
{
OracleParameter Result = new OracleParameter();
Result.ParameterName = ParamName;
if (ParamValue != null)
{
Result.Value = ParamValue;
}
else
{
Result.Value = DBNull.Value;
}
return Result;
}
第二步:寫SQL語句,并調用第一步的參數(例如::pID是個參數,代表調用insertComm.Parameters.Add中的pID的值)
insertComm.CommandText = "insert into
TESTADODOTNET (ID, NAME, AGE, PIC) values (:pID, :pName, :pAge,
:pPic)";
insertComm.Parameters.Add(CreateOraParam("pID",
(txtID.Text.Trim() != "") ? txtID.Text.Trim() : null));
insertComm.Parameters.Add(CreateOraParam("pName",
(txtName.Text.Trim() != "") ? txtName.Text.Trim() : null));
insertComm.Parameters.Add(CreateOraParam("pAge",
(txtAge.Text.Trim() != "") ? txtAge.Text.Trim() : null));
第三步:添加pictureBox1圖片的二進制流字段pAge
//創建字節數組用于給IMAGE字段賦值,fileLength是指所選的文件的大小
byte[] tmpImage = new byte[fileLength];
//根據字節數組創建內存流,之后對該流的操作將會影響字節數組的內容
MemoryStream curStream = new MemoryStream(tmpImage);
//把控件內顯示的圖形寫入到流中,需強制指定格式
pictureBox1.Image.Save(curStream,
curImageFormat);//curImageFormat前面指定的圖片格式
insertComm.Parameters.Add(CreateOraParam("pPic", tmpImage));
OracleConnection conn = new
OracleConnection(@"Data Source=ZX;User ID=sa;Password=sa");//Data
Source后面跟你數據庫的名字,User ID為用戶名,Password為密碼
conn.Open();
string sql = "insert into users(name,pwd) values(:name,:pwd)";
OracleCommand cmd = new OracleCommand(sql, conn);
OracleParameter parn = new OracleParameter(":name", name);
cmd.Parameters.Add(parn);
OracleParameter
parp = new OracleParameter(":pwd", name);
cmd.Parameters.Add(parp);
int result =
cmd.ExecuteNonQuery();//result接收受影響行數,也就是說result大于0的話表示添加成功
conn.Close();
cmd.Dispose();
return result;
conn.Open();
string sql = "delete from users where id=:id";
OracleCommand cmd = new OracleCommand(sql, conn);
OracleParameter pari = new OracleParameter(":id", id);
cmd.Parameters.Add(pari);
int
result =
cmd.ExecuteNonQuery();//result接收受影響行數,也就是說result大于0的話表示添加成功
conn.Close();
cmd.Dispose();
return result;
public DataTable Select()
{
OracleConnection conn = new OracleConnection(@"Data Source=zz;User
ID=sa;Password=sa");//Data Source后面跟你數據庫的名字,User
ID為用戶名,Password為密碼
conn.Open();
string
sql = "select * from users";
OracleCommand cmd = new OracleCommand(sql, conn);
OracleDataAdapter oda = new OracleDataAdapter(cmd);
DataTable dt = new DataTable();
oda.Fill(dt);
conn.Close();
cmd.Dispose();
return
dt;?}
dataGridView1.DataSource = Select();
總結
以上是生活随笔為你收集整理的c#连接oracle11,C#连接远程oracle11g数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle u4e00 u9fa5,o
- 下一篇: oracle 5种索引方式,MySQL使