c-关于数程序链接数据库的问题,向老手请教一下

问题描述

关于数程序链接数据库的问题,向老手请教一下

目前还在学习阶段,语言是C/C#数据库是MYSQL,想请教一下几个问题;
1.客户端每次链接数据库的时候,有没有必要检查数据是否以及开启?测试的时候发现如果数据库没有启动或中途关关闭的话,程序会直接卡死或退出,本人的想法是每次连接数据库的时候用try catch之类的语句测试一下,不让程序卡死影响其它的功能,但是这样好像比较费性能,由于没有参与过比较好的案子这里向大家请教一下这样做好不好,或者有什么更好的解决方法。
2.给客户端调用的存储过程,输入的参数要不要检验是否合法,同样是性能问题,因为经验告诉我们不要信任用户的任何输入,前辈们也这样讲,我担心的是通过破解客户端中的内容,拿到数据库的一些信息以后直接绕过登录验证向存储过程传数据,从而污染数据库,不知道这种担心是否多余,另外还是性能问题,如果存储过程中的语句过多的话势必影响数据库的性能,是否有必要做取舍?
3.以我目前的水平来理解,如果一个程序要向数据库中读/取数据,那么这个程序中应该是要保存相应的数据库用户名和密码的,那么如何保证它们的安全?用户权限肯定是要设置的,但是只要有写权限就有可能向数据库中写入垃圾信息,一般比较正规的处理方法是怎样?

水平有限,可能讲的不是很清楚,大概就是那么回事,麻烦大家了!

解决方案

1 try catch能解决异常导致程序退出的问题,但是没法解决卡死的问题,要解决卡死的问题,你需要开一个线程,在线程里面连接判断。同时把connection对象的timeout设置地小一些。
2 如果是C#,用sqlparamater,这样可以防止sql拼接引起的注入问题。同时,对于敏感的业务,建议在服务器对格式和内容做额外的判断。性能没有你想得那么严重。再说再怎么考虑性能,首先正确性是第一的。
3 对密码做md5编码,然后把编码后的值存入数据库。登录判断的时候,对用户输入的密码也做md5,和存在数据库的比较。
避免垃圾数据一个是你的业务层的过滤和判断,一个是完善的日志,使得一旦有人搞破坏,你可以及时发现,并且用技术以外的手段追究他。

解决方案二:

客户端并发量不是很大,可以在程序开始的时候创建连接,然后使用数据库连接,程序退出的时候关闭连接。

数据库最怕的就是sql注入,所以参数检测是必须的。为了安全,尽量多做一些检测

用户密码可以自己加密等,然后程序中解密后再传入参数

时间: 2025-01-20 13:12:01

c-关于数程序链接数据库的问题,向老手请教一下的相关文章

我在javaEE里面编写程序链接到了数据库sqlserver,如何通过tomcat把数据发布到网上呢

问题描述 我在javaEE里面编写程序链接到了数据库sqlserver,如何通过tomcat把数据发布到网上呢 这是我的程序,连接数据库成功,并且单数run可以在控制台显示数据库数据 现在想通过tomcat把数据库数据发布到网上,这个如何办到呢.打架有相关代码或者教程吗这是我的连接程序:直接发布到tomcat上,DOS没有错误,网页显示找不到package MyTest; import java.sql.*;import java.util.List; public class Main { s

数据库连接-为什么在MyEclips下运行链接数据库的java程序会报异常,但在dos下可以。

问题描述 为什么在MyEclips下运行链接数据库的java程序会报异常,但在dos下可以. import java.sql.*; public class Connect { /** * @param args */ public void getConnection() { String driverName = ""com.microsoft.sqlserver.jdbc.SQLServerDriver""; Connection dbConn=null; t

ASP教程:删除记录和链接数据库程序解释

一.删除记录 opendataconn '打开数据库连接 xxlb=RtnReplaceInt(Trim(request("xxlb")),0) '从里到外依次是接收xxlb变量,去除变量两端的空格,最外层是一个自定义函数,估计与替换有关. id=changechr(request("id")) '接收id,并转换成字符串 ids=split(id,",") '把id按 "," 分割,并保存到数组ids中 for i=0 to

ASP删除记录和链接数据库程序解释

一.删除记录 opendataconn '打开数据库连接 xxlb=RtnReplaceInt(Trim(request("xxlb")),0) '从里到外依次是接收xxlb变量,去除变量两端的空格,最外层是一个自定义函数,估计与替换有关. id=changechr(request("id")) '接收id,并转换成字符串 ids=split(id,",") '把id按 "," 分割,并保存到数组ids中 for i=0 to

jsp标签 jsp500-JSP链接数据库怎么了出现问题

问题描述 JSP链接数据库怎么了出现问题 连接数据库的时候怎么会老出现500错误,是代码的有错误还是架包的原因 解决方案 关于JSP链接数据库的问题 解决方案二: 500的错误原因是请求的Servlet在执行service方法的过程中出现了错误,程序不能继续运行了.以下情况容器都将视为500的一种情况,而返回给客户端这个错误说明.Servlet没有继承HttpServlet或实现Servlet接口web.xml文件中的写错,与真正的包名类名不符service方法中的代码运行时抛出异常解决500的

javascript 链接数据库方法,求解!

问题描述 <scripttype="text/javascript">varconn=newActiveXObject("ADODB.Connection");conn.Open("Provider=SQLOLEDB.1;DataSource=192.168.1.8;UserID=sa;"+"Password=luoli121456;InitialCatalog=duoyonghuban_shijiebei");v

软件-【c#如何动态链接数据库】

问题描述 [c#如何动态链接数据库] 我在自己的电脑上链接的是自己的数据库,,但是软件到别人电脑上是不能用的,如何在软件中载入别人的数据库? 数据库的名称表名都是用脚本直接写的,都是一样的. 解决方案 你最好有一个窗口,让别人用时,直接输入它计算机上的数据库的用户名和密码以及数据库存在的电脑的ip地址: 如果回答对您有帮助,请采纳 解决方案二: ## # 亲,请尝试一下以下方法: 1.在c#代码中加上 [DllImport("kernel32")],此用于创建动态链接, 2.此外若保证

大数据与机器学习:实践方法与行业案例.3.3 自动加载程序的数据库设计

3.3 自动加载程序的数据库设计 根据之前的设计,自动加载程序需要从数据库配置表中获取配置信息,并不断更新相关的状态,表3-2列出了自动加载程序需要的所有配置表. 表3-2 自动加载程序的配置表 表 名 中文名称 用 途 file_settings 数据文件信息表 存储数据文件名称.日期等配置信息 file_status 数据文件状态表 存储数据文件的状态 load_config 加载配置信息表 存储数据库中表的相关信息 ftp_server 数据缓冲区信息表 存储数据缓冲区文件服务器的相关信息

JDBC链接数据库的几个步骤_java

此文列出了JDBC链接数据库的4个步骤,供大家参考下: JDBC:JAVA访问数据库的解决方案. 几个步骤:1.加载驱动类; 2.与数据库建立连接:            3.执行SQL语句    4.处理结果集    5.关闭连接 1. 第一步:加载驱动类: 需要注意:不同的数据库,参照的字符串不同,ORACLE的连接为:Class.forName("oracle.jdbc.driver.OracleDriver"); 这一步执行后,程序可能会抛出: ClassNotFoundExc