oracle常见为题汇总,以及一个简单数据连接操作工厂
2015-03-24 13:21
661 查看
本人软件环境:win8.1 64位操作系统,vs2013,安装好了与oracle数据库对应的客户端
连接oracle数据库、以及操作数据库
1.使用IIS建立网站,浏览网页时候,提示“未在本地计算机上注册“MSDAORA”提供程序”
解决方案: 在本机IIS中,对应自己的网站程序,找到相应的网站应用池,高级设置→启用32位应用程序→true,即可,当然也可以设置全部的应用池程序。
如果是winform或者wpf,请将项目中的属性 cpu类型选择为x86即可
2.浏览网页时候“ORA-06413: 连接未打开”
主要原因 :oracle 连接数据库的程序所在的物理路径是不允许有特殊字符的;
vs系列在windows OS 64位版本下安装时,默认x86程序会安装至program files ( x86 ) ,当然这个“()”,就会引起此问题,深入理解一下:原来在项目中运行web程序,所使用的是VS默认内置web服务器(develop server,现在是IIS express server),而这个内置服务器的程序被安装在了c:/program files(x86)/common files/ 下面,这里用到了"(",因此造成了错误。(winform程序,暂未测试,但是主要原因,是这个问题。)
解决方案:2.1.修改vs系列的安装目录,主要是指安装过程中需要注意,如果安装好了,最好还是别改了。太麻烦了
2.2.修改这个内置server的安装路径,然后把VS中(项目→属性→web→服务器→服务器指向)服务器指向改成自己定义的,暂时没找到怎么执行自定义的
2.3.所以这里只用了一个方法绕开内置server。那就是使用本机IIS来调试程序。在解决方案中,选中web项目点右键选属性(项目→属性→web→服务器),在web标签下可以把调试服务器改为“本机iis”。这时候再调试web程序,结果会出现“未在本地计算机上注册“MSDAORA”提供程序”,晕,原来是64位的IIS,怎么办,(设置全部的应用池程序,启用32位支持)打开IIS,点击应用池程序,在操作界面右侧,设置应用程序池默认设置,启用32位应用程序→true,即可,连接数据库成功了。
这个爽了吧,调试什么的都莫有问题。
3.DOS使用sqlplus连接oracle数据库时候,出现“ORA-12560: TNS: 协议适配器错误”
解决方案:可能是先输入用户名,在密码方式进入的,然后服务器有多个数据库实例,权限不一致所导致, 可以使用指定具体某一个数据库的方式进入:
cmd> sqlplus 用户名/密码@数据库名称 例如:sqlplus
system/shine@puren
4.浏览网页时候,提示"未找到oracle 客户端和网络组件"问题
详解: 找到ORACLE_HOME文件夹,右击—〉属性—〉安全,选Authenticated Users,查看它的属性,将Read and Execute的勾先去掉(默认情况下该勾是选中的),在勾上,然后重新启动你的机器,在运行程序,
未安装的话:请查看: http://www.cnblogs.com/yylp521/archive/2012/04/09/2438676.html
5.未选定行
其实是:没有数据 ,主要是使用PL/SQL 在非查询操作,时候需要使用commit提交。
6.提供一个简单多数据库连接操作类(mssqlerver、oracle、mysql)
View Code
web.config
View Code
简单使用
//添加参数
List<DbParameter> paraList = new List<DbParameter>();
paraList.Add(DBFactory.AddFiled("source_id", serialNum));
//执行sql语句
DBFactory.ExecuteDataTable(“select * from patient where source_id=?”,paraList.ToArray());//oracle
//paraList.Add(DBFactory.AddFiled("@source_id", serialNum));
//DBFactory.ExecuteDataTable(“select * from patient where source_id=@source_id”,paraList.ToArray());//mssqlserver
//mysql的忘了,有时间补上
简单区别
mssqlserver :不需要引用类库(已内置了),格式化参数使用@参数名
oracle:需要安装本地客户端,或者下载oracle for net操作类库(安装包越来越大了),也可以使用oledb操作,而原来使用System.Data.Oracle; VS 已不建议使用。 格式化参数用?
mysql:简单使用的话,直接调用类库,更多关于mysql连接的可以查看: http://www.cnblogs.com/yylp521/p/3173176.html
连接oracle数据库、以及操作数据库
1.使用IIS建立网站,浏览网页时候,提示“未在本地计算机上注册“MSDAORA”提供程序”
解决方案: 在本机IIS中,对应自己的网站程序,找到相应的网站应用池,高级设置→启用32位应用程序→true,即可,当然也可以设置全部的应用池程序。
如果是winform或者wpf,请将项目中的属性 cpu类型选择为x86即可
2.浏览网页时候“ORA-06413: 连接未打开”
主要原因 :oracle 连接数据库的程序所在的物理路径是不允许有特殊字符的;
vs系列在windows OS 64位版本下安装时,默认x86程序会安装至program files ( x86 ) ,当然这个“()”,就会引起此问题,深入理解一下:原来在项目中运行web程序,所使用的是VS默认内置web服务器(develop server,现在是IIS express server),而这个内置服务器的程序被安装在了c:/program files(x86)/common files/ 下面,这里用到了"(",因此造成了错误。(winform程序,暂未测试,但是主要原因,是这个问题。)
解决方案:2.1.修改vs系列的安装目录,主要是指安装过程中需要注意,如果安装好了,最好还是别改了。太麻烦了
2.2.修改这个内置server的安装路径,然后把VS中(项目→属性→web→服务器→服务器指向)服务器指向改成自己定义的,暂时没找到怎么执行自定义的
2.3.所以这里只用了一个方法绕开内置server。那就是使用本机IIS来调试程序。在解决方案中,选中web项目点右键选属性(项目→属性→web→服务器),在web标签下可以把调试服务器改为“本机iis”。这时候再调试web程序,结果会出现“未在本地计算机上注册“MSDAORA”提供程序”,晕,原来是64位的IIS,怎么办,(设置全部的应用池程序,启用32位支持)打开IIS,点击应用池程序,在操作界面右侧,设置应用程序池默认设置,启用32位应用程序→true,即可,连接数据库成功了。
这个爽了吧,调试什么的都莫有问题。
3.DOS使用sqlplus连接oracle数据库时候,出现“ORA-12560: TNS: 协议适配器错误”
解决方案:可能是先输入用户名,在密码方式进入的,然后服务器有多个数据库实例,权限不一致所导致, 可以使用指定具体某一个数据库的方式进入:
cmd> sqlplus 用户名/密码@数据库名称 例如:sqlplus
system/shine@puren
4.浏览网页时候,提示"未找到oracle 客户端和网络组件"问题
详解: 找到ORACLE_HOME文件夹,右击—〉属性—〉安全,选Authenticated Users,查看它的属性,将Read and Execute的勾先去掉(默认情况下该勾是选中的),在勾上,然后重新启动你的机器,在运行程序,
未安装的话:请查看: http://www.cnblogs.com/yylp521/archive/2012/04/09/2438676.html
5.未选定行
其实是:没有数据 ,主要是使用PL/SQL 在非查询操作,时候需要使用commit提交。
6.提供一个简单多数据库连接操作类(mssqlerver、oracle、mysql)
1 using System; 2 using System.Collections.Generic; 3 using System.Data; 4 using System.Data.Common; 5 using System.Linq; 6 using System.Web; 7 using System.Xml; 8 using MySql.Data.MySqlClient; 9 10 namespace WebApp 11 { 12 public class DBFactory 13 { 14 private static DbConnection conn; 15 private static DbProviderFactory provider = DbProviderFactories.GetFactory(System.Configuration.ConfigurationManager.ConnectionStrings["lihxConnStr"].ProviderName);//Provider 16 private static string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["lihxConnStr"].ConnectionString; 17 18 public static DbParameter AddFiled(string paramName, object value) 19 { 20 DbParameter para = DBFactory.provider.CreateParameter(); 21 para.ParameterName = paramName; 22 para.Value = value; 23 return para; 24 } 25 public static DbConnection OpenConnection() 26 { 27 conn = provider.CreateConnection(); 28 conn.ConnectionString = connStr; 29 conn.Open(); 30 return conn; 31 } 32 public static int ExecuteNonQuery(string cmdText, params DbParameter[] parameters) 33 { 34 using (conn = provider.CreateConnection()) 35 { 36 conn.ConnectionString = connStr; 37 conn.Open(); 38 return ExecuteNonQuery(conn, cmdText, parameters); 39 } 40 } 41 public static int ExecuteNonQuery(DbConnection conn, string cmdText, params DbParameter[] parameters) 42 { 43 using (DbCommand cmd = conn.CreateCommand()) 44 { 45 cmd.CommandText = cmdText; 46 cmd.Parameters.AddRange(parameters); 47 return cmd.ExecuteNonQuery(); 48 } 49 } 50 51 public static object ExecuteScalar(string cmdText, params DbParameter[] parameters) 52 { 53 using (conn = provider.CreateConnection()) 54 { 55 conn.ConnectionString = connStr; 56 conn.Open(); 57 return ExecuteScalar(conn, cmdText, parameters); 58 } 59 } 60 public static object ExecuteScalar(DbConnection conn, string cmdText, params DbParameter[] parameters) 61 { 62 using (DbCommand cmd = conn.CreateCommand()) 63 { 64 cmd.CommandText = cmdText; 65 cmd.Parameters.AddRange(parameters); 66 return cmd.ExecuteScalar(); 67 } 68 } 69 70 public static DataTable ExecuteDataTable(string cmdText, params DbParameter[] parameters) 71 { 72 using (conn = provider.CreateConnection()) 73 { 74 conn.ConnectionString = connStr; 75 conn.Open(); 76 return ExecuteDataTable(conn, cmdText, parameters); 77 } 78 } 79 public static DataTable ExecuteDataTable(DbConnection conn, string cmdText, params DbParameter[] parameters) 80 { 81 using (DbCommand cmd = conn.CreateCommand()) 82 { 83 cmd.CommandText = cmdText; 84 cmd.Parameters.AddRange(parameters); 85 cmd.CommandType = CommandType.Text; 86 using (DbDataAdapter adapter = provider.CreateDataAdapter()) 87 { 88 adapter.SelectCommand = cmd; 89 DataTable dt = new DataTable(); 90 adapter.Fill(dt); 91 return dt; 92 } 93 } 94 } 95 } 96 }
View Code
web.config
1 <?xml version="1.0" encoding="utf-8"?> 2 <configuration> 3 <system.web> 4 <compilation debug="true" targetFramework="4.0"> 5 <!--可以后续添加mysql使用--> 6 <!--<assemblies> 7 <add assembly="MySql.Data,Version=6.6.4.0,Culture=neutral,PublicKeyToken=C5687FC88969C44D"/> 8 </assemblies>--> 9 </compilation> 10 </system.web> 11 <connectionStrings> 12 <!--<add name="lihxConnStr" connectionString="Data Source=172.168.0.34\sqlexpress;Initial CataLog=D:\SHINEMDS\WEBHQS\APP_DATA\SHINETRIAGE.MDF;uid=sa;pwd=Shine2008;" providerName="System.Data.SqlClient"/>--> 13 <add name="lihxConnStr" connectionString="Host=172.168.0.110;Port=1521;Data Source=puren;User Id=system;Password=shine;provider=MSDAORA;" providerName="System.Data.OleDb" /> 14 <!--<add name="lihxConnStr" connectionString="Data Source=172.168.0.234;Initial CataLog=shinetriage;uid=root;pwd=shinevod;" providerName="MySql.Data.MySqlClient"/>--> 15 16 </connectionStrings> 17 <!--为mysql提供数据工厂--> 18 <system.data> 19 <DbProviderFactories> 20 <add name="MySQL Data Provider" description="ADO.Net driver for MySQL" invariant="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data"/> 21 </DbProviderFactories> 22 </system.data> 23 </configuration>
View Code
简单使用
//添加参数
List<DbParameter> paraList = new List<DbParameter>();
paraList.Add(DBFactory.AddFiled("source_id", serialNum));
//执行sql语句
DBFactory.ExecuteDataTable(“select * from patient where source_id=?”,paraList.ToArray());//oracle
//paraList.Add(DBFactory.AddFiled("@source_id", serialNum));
//DBFactory.ExecuteDataTable(“select * from patient where source_id=@source_id”,paraList.ToArray());//mssqlserver
//mysql的忘了,有时间补上
简单区别
mssqlserver :不需要引用类库(已内置了),格式化参数使用@参数名
oracle:需要安装本地客户端,或者下载oracle for net操作类库(安装包越来越大了),也可以使用oledb操作,而原来使用System.Data.Oracle; VS 已不建议使用。 格式化参数用?
mysql:简单使用的话,直接调用类库,更多关于mysql连接的可以查看: http://www.cnblogs.com/yylp521/p/3173176.html
相关文章推荐
- oracle常见为题汇总,以及一个简单数据连接操作工厂
- oracle常见为题汇总,以及一个简单数据连接操作工厂
- ASP连接Access数据库几种常见方法以及简单操作教程
- JDBC连接Oracle代码案列操作之--Oracle简单数据准备
- mysql 存储过程一个简单的循环遍历操作数据
- 无需root简单易用安卓wifi调试 这个只是一个小操作,三步: 1. 用数据线连接你的手机和电脑 2. 电脑终端执行命令: adb tcpip 5555 3. 电脑终端执行命令: adb c
- SpringBoot简单连接数据库以及查询数据
- oracle csv文件数据导入以及常见问题
- SpringMVC4+thymeleaf3的一个简单实例(篇五:页面和MySql的数据交互-展示以及存储)
- SpringMVC4+thymeleaf3的一个简单实例(篇五:页面和MySql的数据交互-展示以及存储)
- Java Web 开发利用Struts2+Spring+mybatis写一个用户登录界面以及简单的数据交互
- SpringMVC4+thymeleaf3的一个简单实例(篇五:页面和MySql的数据交互-展示以及存储)
- 如何用eclipse将数据库oracle数据相连接,实现查询数据库中的信息以及更改添加表中内容
- Oracle-简单sql语句的操作(全汇总)
- Oracle学习总结(3)——Navicat客户端连接Oracle数据库常见问题汇总
- Hibernate中使用Session操作数据以及部分简单HQL(hibernate query language)
- PLSQL连接Oracle数据常见问题ORA-12154: TNS
- 一个项目配置多个数据源进行数据操作,简单方便。
- MFC(基于VS2013)连接下位机简单实例(下位机连接以及Socket数据发送接收)
- 安卓逆向入门之如何连接夜神与AndroidKiller,以及一个简单crackme