拖了很久今天终于在博客园写了自己第一篇随笔:
话不多说,我们直接进入正题:
1.连接数据库
using (OracleConnection conn = new OracleConnection("data source=192.168.97.60/orcl;User Id=abc;Password=abc;"))
{
conn.Open();
}
using(....){.......}:using的使用就是在与资源的释放。
连接数据库要知道数据库的数据源data source,用户名User Id,以及密码Password,正确填写这些,在用上面的代码,一般连接都是成功的。
2.数据库的增、删、改
using (OracleConnection conn = new OracleConnection("data source=192.168.97.60/orcl;User Id=abc;Password=abc;"))
{
conn.Open();
using(OracleCommand cmd=conn.CreateCommand())
{
cmd.CommandText = "INSERT INTO SZPT(id) VALUES (sys_guid())";
cmd.ExecuteNonQuery();
}
}
必须打开数据库连接之后才可以进行增删改,就是说conn.Open()要放在前面,进行增删改就用ExecuteNonQuery。
着重说明一下sys_guid(),sys_guid()会生成一个独一无二的32的字符串,来作为唯一标示的表的主键。
3.获取返回只有一行一列的数据
using (OracleConnection conn = new OracleConnection("data source=192.168.97.60/orcl;User Id=abc;Password=abc;"))
{
conn.Open();
using(OracleCommand cmd=conn.CreateCommand())
{
cmd.CommandText = "SELECT COUNT(*) FROM SZPT";
decimal i= (decimal)cmd.ExecuteScalar();
MessageBox.Show(i.ToString());
}
}
获取一行一列的数据用ExecuteScalar
4.获取返回的表
using (OracleConnection conn = new OracleConnection(connstr))
{
conn.Open();
using(OracleCommand cmd=new OracleCommand())
{
cmd.Connection = conn;
cmd.CommandText = sql;
// cmd.Parameters.AddRange(parameters);
OracleDataAdapter ada = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
ada.Fill(ds);
return ds.Tables[0];
}
}
5.获取返回的ExecuteReader
using (OracleConnection conn = new OracleConnection(connstr))
{
conn.Open();
using(OracleCommand cmd=new OracleCommand())
{
cmd.CommandText = sql;
//cmd.Parameters.AddRange(parameters);
OracleDataReader reader= cmd.ExecuteReader();
while (reader.Read())
{
reader.GetString(0);
}
}
}
注意:DataSet获得的表数据会存储到客户端,而ExecuteReader获得的数据是存储在服务端的,用ExecuteReader获取数据的时候,如果和服务端断开了,数据也就不会再获得,而4当数据存储到客户端后,即使与服务端断开数据依然会有。
所以当获取的数据量不大的时候可以用DataSet把数据存储到客户端,如果获取的数据量很大,最好用ExecuteReader这样不至于客户端的内存占用太大而至于性能不好。