oracle实训 c#连接Oracle常见问题及其解决方法

问题1及解决方法

 

解决方法

在项目的属性里->生成->平台目标->将原来anycpu改为x64

问题2 及解决方法

Data Source的取值问题

解决方法:弄清楚Data Source的取值的意义是什么,结果是连接的服务器名字

利用此语句查询select global_name from global_name;

得出Data Source取值是ORCL

如果不改的情况下默认是ORCL

问题3及解决方法

刚开始不知道怎么连接Oracle

解决方法:在网上搜索后,通过实践解决

添加引用—>System.Data.OracleClient

再利用语句进行操作

问题4及解决方法

Oracle操作语句的单引号问题

解决方法

查询更新删除时:利用双引号将单引号包含在字符串从而解决数据类型不匹配的问题

例:

"select * from students where studentid=" + id + " and password="+ "'" + psd + "'"

插入数据时:将双引号包含在单引号里,从而实现插入

例:

"INSERT INTO students VALUES ('','"+name+ "','" + psd + "','" + phone+ "','" +  emial+ "')"

问题5及解决方法

怎么将oracle里表的数据添加到combox的下拉框里,从而实现自动更新下拉框列表

解决方法:利用comboBox1.Items.Add()

问题6及解决方法

如何让下拉框里显示多条信息,并且再逐条信息提取出来

解决方法:

如:课程号—课程名显示成一列

this.comboBox1.Items.Add(dtr.GetOracleNumber(0).ToString()+"-"+dtr.GetString(1));

提取数据:string[] s = comboBox1.Text.Split(new char[] { '-' });

S[0],s[1]依此对应第一第二条的数据

问题7及解决方法

如何通过combox的值的不同进入不同界面

解决方法:利用if 进行判断combox的值满足那个条件进入那个界面

如:

if (comboBox1.Text == "管理员登陆")

{}

if (comboBox1.Text == "学生登陆")

{}

if (comboBox1.Text == "教师登陆")

{}

问题8及解决方法

选课表,和授课表在刚开始的时候分别设立了学号和教师号,导致一名学生只能选一门课,一个老师只能教授一门课

解决方法:
进入oracle的命令行进入用户

drop table xuanke drop primary key;

删除选课表studentid的主键约束;

drop table shouke drop primary key;删除授课表teacherid的主键约束;

问题9及解决方法

界面中哪一项修改在数据库里更新哪一项

解决方法:判断点击按钮后textBox1.Text值与点击按钮前的值是否有变化,如果有变化,则进入对应更新程序

问题10及解决方法

程序包体创建的过程中一直出错,但是cmd里不现实错误信息

解决方法: 输入show errors;

显示出现错误信息,从而解决问题

问题11及解决方法

如何实现oracle的程序包的调用,从网上查询之后解决

解决方法

如下:

var conn = new OracleConnection(connString);

            try

            {

            conn.Open();

           

            OracleCommand cmd = conn.CreateCommand(); 

            cmd = new OracleCommand("pkg_xuanke.delete_xuanke_id", conn);

            cmd.CommandType = CommandType.StoredProcedure;

            OracleParameter p1 = new OracleParameter("course_id", OracleType.Number);

            p1.Direction = ParameterDirection.Input;             

            int id =int.Parse(s[0]);                

            p1.Value = id;

            OracleParameter p2 = new OracleParameter("student_id", OracleType.Number);

            p2.Direction = ParameterDirection.Input;

            int d = int.Parse(global.id);

            p2.Value = d;

            cmd.Parameters.Add(p1);

            cmd.Parameters.Add(p2);

                if (cmd.ExecuteNonQuery() > 0)

            {

                MessageBox.Show("删除选课记录成功");

            }

            else

            {

 

                MessageBox.Show("删除选课记录失败");

            }

            }

            catch (Exception ex)

            {

                MessageBox.Show(ex.Message.ToString());

 

            }

            finally

            {

                conn.Close();

            }

问题12及解决方法

在调试程序的过程出现无论怎么改程序,程序的运行界面内容都不变;

解决方法:将Users\admin\Desktop\Oracle实训\代码\network teaching platform\network teaching platform\obj\的文件夹下的debug文件夹删除,重新编译生成

        }

问题13及解决方法

如何建立一个类似于全局变量的变量。可以供程序的每个界面调用

解决方法:在该命名空间下新建一个类如下:

 public class global

    {
        public static string  name = "";
        public static string  id= "";
        public static string  psd= "";
        public static int a = 0;

    }

调用方法:global.a   global.psd  global.id

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值