Connection要关闭
抛异常在finally
{
connection.close();//这里写你的连接
}
每次用了都关掉
B. SQL执行错误怎么办
MySQL软件所提供的权限(mysql.user、mysql.db、mysql.host)
(1) 系统表mysql.user
user权限表中字段分为四类: 用户字段、权限字段、安全字段和资源控制字段。用户字段
权限字段
安全字段
- # 查看是否支持ssl标准show variables like 'have_openssl';123
资源控制字段
用户字段
mysql.db表权限字段
系统表mysql.tables_priv表结构
mysql.tables_priv表结构.png
mysql.tables_priv表结构.png
系统表mysql.columns_priv的表结构
用户机制
(1) 登录和退出MySQL软件的完整命令- # 登录mysql -h 127.0.0.1 -u root -p# 退出(q)exit|quit12345
执行CREATE USER语句来创建用户账户
- create user 'mazaiting'@'localhost' identified by '123456';12
执行INSERT语句来创建用户
- insert into user(host,user,password,ssl_cipher,x509_issuer,x509_subject)values('localhost', 'linghaoyu', password('linghaoyu'),'','','');# 使新建用户生效flush privileges;12345
执行GRANT语句来创建用户
- grant select on company.t_deptto 'wangxingqin'@'localhost' identified by 'wangxingqin';123
修改超级权限用户账户密码
- # 通过mysqladmin命令修改root用户密码mysqladmin -u root -p password "123456"# 通过SET命令修改密码set password=password("123456");# 更新系统表mysql.user数据记录修改root用户密码update user set password=password("123456")where user="root" and host="localhost";12345678
- # 创建用户grant select,create,drop on *.*to 'mazaiting'@'localhost' identified by 'mazaiting'with grant option;# 通过grant命令修改用户密码grant select,create,drop on *.*to 'mazaiting'@'localhost' identified by '123456';# 通过set命令修改用户密码set password for 'mazaiting'@'localhost'=password("123456");# 更新系统表mysql.user数据记录修改用户密码update user set password=password("mazaiting")where user='mazaiting' and host='localhost';# 登录当前用户,并使用set命令修改密码set password=password("123456");123456789101112131415
通过DROP USER语句删除普通用户
- drop user 'mazaiting'@'localhost';12
删除系统表mysql.user数据记录实现删除用户账号
- # 选择mysql数据库use mysql;# 删除用户delete from user where user='mazaiting' and host='localhost';12345
权限管理
(1) 对用户进行授权- # 创建用户grant select,create,drop on *.*to 'mazaiting'@'localhost' identified by 'mazaiting'with grant option;# 查询表数据记录select host,user,password,select_priv,update_priv,grant_priv,drop_privfrom mysql.userwhere user='mazaiting' G12345678910
- show grants for 'mazaiting'@'localhost' G12
- # 回收用户的查询权限revoke select on *.* from 'mazaiting'@'localhost';# 回收用户的全部权限revoke all privileges, grant optionfrom 'mazaiting'@'localhost
用户字段.png
权限字段.png
安全字段.png
资源控制.png
系统表mysql.user中的所有资源字段的默认值为0,表示没有任何限制。
(2) 系统表mysql.db和mysql.host
在系统数据库mysql中,权限表除了表user外,还有表db和表host,这两张表都存储了某个用户对数据库的权限。
mysql.db表.png
mysql.host表
mysql.host表.png
权限字段.png
(3)其他权限表
在系统数据库mysql中,除了上述权限表外,还有表tables_priv和columns_priv,其中标tables_priv用来实现单个表的权限设置,表columns_priv用来实现单个字段列的权限设置。
columns_priv的表结构png
(2) 创建普通用户账户
(3) 利用超级权限用户root修改用户账户密码
(4) 利用拥有超级权限用户root修改普通用户账户密码
(5) 删除普通用户账户
(2) 查看用户所拥有权限
(3) 收回用户所拥有权限
C. sql2000局域网访问提示数据库错误
1、安装SQL2000最高的补丁,应该是SP4
2、路由器中需要将A主机的1433端口(若你未修改过端口的话)对外映射
3、还有种可能,需要关闭A主机上的防火墙,或者是在防火墙上开启1433的端口允许访问
D. sql数据库连接出错
在连接到
SQL
Server
2005
时,在默认的设置下
SQL
Server
不允许进行远程连接可能会导致此失败。
(provider:
命名管道提供程序,
error:
40
-
无法打开到
SQL
Server
的连接)
错误:"在连接到
SQL
Server
2005
时,在默认的设置下
SQL
Server
不允许进行远程连接可能会导致此失败。
(provider:
命名管道提供程序,
error:
40
-
无法打开到
SQL
Server
的连接)
"
上述错误我遇到两种情况,一种是在打开打开SQL
Server
2005时弹出的,另一种是在应用程序连接SQL
Server
2005时出现的.归纳了一下,由以下几个原因:
1.数据库引擎没有启动.
有两种启动方式:
(1)开始->程序->Microsoft
SQL
Server
2005->SQL
Server
2005外围应用配置器,在打开的界面单击"服务的连接的外围应用配置器",在打开的界面中找到Database
Engine,单击"服务",在右侧查看是否已启动,如果没有启动可单击"启动",并确保"启动类型"为自动,不要为手动,否则下次开机时又要手动启动;
(2)可打开:开始->程序->Microsoft
SQL
Server
2005->配置工具->SQL
Server
Configuration
Manager,选中SQL
Server
2005服务中SQL
Server(MSSQLSERVER)
,并单击工具栏中的"启动服务"按钮把服务状态改为启动;
使用上面两种方式时,有时候在启动的时候可能会出现错误,不能启动,这时就要查看"SQL
Server
2005配置管理器"中的SQL
Server
2005网络配置->MSSQLSERVER协议中的VIA是否已启用,如果已启用,则把它禁止.然后再执行上述一种方式操作就可以了.
2.进行远程连接时,是否已允许远程连接.
SQL
Server
2005
在默认情况下仅限本地连接.我们可以手动启用远程连接.在上面第一种方式中,找到Database
Engine,单击"远程连接",在右侧将"仅限本地连接(L)"改为"本地连接和远程连接(R)",并选中"同时使用TCP/IP和named
pipes(B)".
3.如果是远程连接,则还要查看连接数据库的语句是否正确,登录账户是否正确,密码是否正确等.
我在一次局域网内连接数据库时,就要因为连接字符串出了问题,在局域网内一台机子连接另一台机子上数据库时,把server=装有数据库的另一台机子的IP.我在连接数据库时总是出现上面的错误,查了好长时间,后来发现,IP没有正确到传到连接字符串,原来我在连接时,使用的是本地,即127.0.0.1,输入的IP没有传到连接字符串.
以上是我归纳的几种情况,希望能对遇到类似问题的朋友提供些帮助和参考.
以上的资料来源于互联网,但是我在实际中还想到了一个问题,就是多看一下事件日志,例如这次的事件,我所得到的提示信息也是如此,但是如果按照当时的想法,我也认为是SQL出现了问题,在冷静一下以后,我查看了系统日志,看到的日志却是如下:
由于下列错误,SQL
Server
FullText
Search
(MSSQLSERVER)
服务启动失败:
由于登录失败而无法启动服务。
明白了!原来我由于担心密码的问题,修改了登录的用户名和密码,而SQL在安装完成后,服务的启动是采用administrator登录,当我修改了administrator后,并未修改服务的登录属性,所以服务根本就无法正常启动。这个问题正好是出现在我修改了密码后,并未立即重启服务器,而是在数天之后,所以也忘记了这个原因。修改了登录属性后,SQL登录正常。
E. SQL连接时报错
第一如果是连接本地的数据库,服务器名称: 可以填写 这个一个点(例.)就可以,.或者127.0.0.1;
第二 配置一下环境,允许远程连接.
F. sql 连接服务器时候出现拒绝访问,发生错误55
逐一检查:
1、 防火墙;
2、1433端口;
来排除故障,但今天发现有以下情况同样会造成这个现象。
排除过程:
1、检查防火墙设置和1433端口设置正确;
2、如果出现“找不到网络路径”的报错,那么最好先PING一下它的IP地址。如果PING不通,那么需要先确认它是否连在网络或者网络连通性是否正常。然后查看是否启用了防火墙或者屏蔽掉了相应的端口。如果PING IP地址是正常的,但PING目标机器的计算机名不通,则需要查看是事网络名称解析有问题。关于如何诊断名称解析问题,可以先查看是所有客户端机器有问题还是某一台机器有问题。如果是所有机器的名称解析都有问题,那么你需要到网络的DNS或WINS服务器上检查了。如果只是某一台机器有问题,你需要先检查一下hosts和lmhosts文件;如果正常,可以重新注册一下DNS名字(ipconfig/reisterdns)。
----正常;
3、如果出现“xxx计算机无法访问,您可能没有权限使用网络资源。请与这台服务器的管理员联系以查明您是否有访问权限”的报错,这可能是计算机的安全设置被改动过了,导致目标计算机无法被访问。可以采取以下步骤解决:
---存在这个问题,通过以下方法来解决
a. 打开“我的电脑”,在菜单上选择“工具”->“文件夹选项”->“查看”,清除“使用简单文件共享(推荐)”的选择。
b. 右键点击“我的电脑”,选择“管理”,选择“本地用户和组”->“用户”,右键点击Guest用户,选“属性”,清除“帐户已停用”的选择。
c. 点击“开始”->“运行”,输入secpol.msc,选择左边的“本地策略”->“用户权力指派”,双击右边的“从网络访问此计算机”,保证其中有Everyone,双击左边的“拒绝从网络访问此计算机”,保证其是空的。
d. 选择左边的“本地策略”->“安全选项”,a.确认右边的“网络访问:本地帐户的共享与安全模式”为“经典”;b.确认右边的“Microsoft网络客户:为通讯启用数字签名(总是)”为“已停用”;c.确认右边的“Microsoft网络客户:为通讯启用数字签名(如果服务器允许)”为“已启用”;d.确认右边的“Microsoft网络服务器:为通讯启用数字签名(总是)”为“已停用”;e.确认右边的“Microsoft网络服务器:为通讯启用数字签名(如果服务器允许)”为“已启用”。
G. sql server能连接,但程序访问报错
你检查下 你的这个数据库 是否有权限 是否可以这样子操作。。 还有 。。 你确认下 你的C#链接语句里面的登录名和密码 还有DataSource 是否是你远程链接的数据库所在的IP 例如 你的远程数据库是在172.16.8.116上。 那么你的链接语句DataSource 就要写172.16.8.116 数据库名 你要练接的数据库名字
H. 求救:同一页面中多次使用sql top + order by就报错说缺少对象,怎么解决
下面的sql和rs改变一下名称,比如asql或ars
也可以关闭上面的rs。
rs.close
I. 使用C#循环反复多次连接SQL数据库,出现“内部连接致命错误”的问题,怎么解决
利用DataAdapter和DataSet不用Connection的Open,即可以不用判断SqlConnection的状态,而直接使用
SqlDataAdapter SQLda = new SqlDataAdapter(SQLstr, My_con);
DataSet My_DataSet = new DataSet();
SQLda.Fill(My_DataSet, tableName);
J. 直接用sql语句运行次数过多真的会出错吗
执行sql是否出错跟次数多少没有直接关系,指的可能是并发控制方面的问题。可能出现多个人对同一记录进行修改操作,如一个在进行删除而一个在进行修改信息操作,这样使数据库的数据出现不一致性问题,并发控制也以出现一个修改操作没有提交就被另一个人修改使得数据不正确。