技术已荒废

生活的理想,是为了理想的生活!

---->>Nothing is impossible for a willing heart.

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
一、关于数据库的操作
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));


posted on 2006-09-29 19:12  技术已荒废  阅读(228)  评论(0编辑  收藏  举报