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();