Oracle连接和使用
1.Oracle的连接
需要导入System.Data.OracleClient.dll,如果连接需要安装客户端。连接字符串为:
"uid=system; pwd=sobad2005; Data Source=BLOGS"
如果输入用户名和用户密码,同时需要制定数据库的名称。
2.数据的插入,更新等操作。见下面的插入操作。
/// <summary>
/// 添加新的公告
/// </summary>
/// <param name="placTitle">公告标题</param>
/// <param name="placText">公告内容</param>
/// <returns>bool</returns>
public bool AddOnePlacard( string placTitle, string placText )
{
bool state = true;
OracleCommand oc = new OracleCommand();
oc.Connection = conn;
//查询最大的ID值
if( conn.State == ConnectionState.Closed )
{
conn.Open();
}
oc.CommandText = "Select Max(placid) As mid From placard";
OracleDataReader read = oc.ExecuteReader();
read.Read();
int mid = 1;
if( !read.IsDBNull( 0 ))
{
mid = int.Parse( read["mid"].ToString() ) + 1;
}
read.Close();
//注意:一些关键字:date是不能使用的(改成wdate就可以了),如果使用,会报告:无效的主机/赋值变量名
//另外还有一些user字段也是不要用好了。总之,字段不要简单,复杂些好。
oc.CommandText = "Insert Into placard( placid,plactitle,plactext,placdate ) Values( :id, :title,:text,:wdate)";
oc.Parameters.Add( ":id", OracleType.Int32 );
oc.Parameters[":id"].Value = mid;
oc.Parameters.Add( ":title", OracleType.VarChar,50 );
oc.Parameters[":title"].Value = placTitle;
oc.Parameters.Add( ":text", OracleType.VarChar,4000 );
oc.Parameters[":text"].Value = placText;
oc.Parameters.Add( ":wdate", OracleType.DateTime );
oc.Parameters[":wdate"].Value = System.DateTime.Now.ToString();
try
{
oc.ExecuteNonQuery();
}
catch
{
state = false;
}
finally
{
conn.Close();
}
return state;
}
/// 添加新的公告
/// </summary>
/// <param name="placTitle">公告标题</param>
/// <param name="placText">公告内容</param>
/// <returns>bool</returns>
public bool AddOnePlacard( string placTitle, string placText )
{
bool state = true;
OracleCommand oc = new OracleCommand();
oc.Connection = conn;
//查询最大的ID值
if( conn.State == ConnectionState.Closed )
{
conn.Open();
}
oc.CommandText = "Select Max(placid) As mid From placard";
OracleDataReader read = oc.ExecuteReader();
read.Read();
int mid = 1;
if( !read.IsDBNull( 0 ))
{
mid = int.Parse( read["mid"].ToString() ) + 1;
}
read.Close();
//注意:一些关键字:date是不能使用的(改成wdate就可以了),如果使用,会报告:无效的主机/赋值变量名
//另外还有一些user字段也是不要用好了。总之,字段不要简单,复杂些好。
oc.CommandText = "Insert Into placard( placid,plactitle,plactext,placdate ) Values( :id, :title,:text,:wdate)";
oc.Parameters.Add( ":id", OracleType.Int32 );
oc.Parameters[":id"].Value = mid;
oc.Parameters.Add( ":title", OracleType.VarChar,50 );
oc.Parameters[":title"].Value = placTitle;
oc.Parameters.Add( ":text", OracleType.VarChar,4000 );
oc.Parameters[":text"].Value = placText;
oc.Parameters.Add( ":wdate", OracleType.DateTime );
oc.Parameters[":wdate"].Value = System.DateTime.Now.ToString();
try
{
oc.ExecuteNonQuery();
}
catch
{
state = false;
}
finally
{
conn.Close();
}
return state;
}
需要主意的是在SQL中的“ @”符号,变成了“:”,这样就可以很好的完成数据的插入操作了。
3.需要主意的
1.oracle没找到设置自动递增的方法,听别人说好像没有。
2.在程序中有些敏感字段最好不要使用,比如date,user等。