新阁上位机开发——数据库系列问题一网打尽

[复制链接]
查看5680 | 回复0 | 2022-3-14 14:46:32 | 显示全部楼层 |阅读模式
前言
, n; I/ Y* ^" W5 g2 `" n8 Y
我们在上位机开发过程中,经常会遇到数据库的问题,前面已经给大家总结了一些关于数据库的问题,基本上大家遇到的数据库问题,都能从下面的文章中找到答案,希望大家可以收藏一下,遇到问题,可以一一对照去查找原因。
; q8 U  }; c' D/ D7 {5 Y$ g' d
数据库系列之特定实例错误--https://www.toutiao.com/a7047017172417266188/?channel=&source=search_tab

1 ^' q+ [! j# `, @" x8 p# K
数据库系列之sa账户登录失败---https://www.toutiao.com/i7064379774482792990/

2 x! N, _. G2 _2 ]- q' u
数据库系列之常见语法错误--https://www.toutiao.com/a7047695209169158687/?channel=&source=search_tab

# W4 e  k# X1 c
数据库系列之App.config配置文件错误---https://www.toutiao.com/a7055168620573245960/

! ?( ^( j& Y5 T3 a- B
其实,大家在学习数据库的时候,可能还会遇到各种奇奇怪怪的问题,今天我们针对这些零散的问题,做一下具体的分析。
, `* o' s/ p9 }% M: o
希望可以为大家学习数据库铺平道路。
8 ]% k9 G! z; i* W* `/ J7 |
常见错误1
& P) D- S8 W, v3 v2 h( G0 C$ n- {) c7 i$ s+ u
【C#上位机开发数据库常见问题】错误提示:不支持关键字“sever”。

, j9 d  F' b/ k) p
《C#程序》的错误提示:
5 m8 ]2 J# Z. c( T" P* ?
: j; }6 Z4 s" K8 N: x9 y
& S8 Y/ O7 w3 `) \5 T1 G4 X) V
【问题分析】:只要是在连接对象创建中,提示“不支持关键字的”,就是这个关键字写错了。

3 z4 D9 _% C8 t解决方案9 z/ R2 ^2 p* O7 C* N
/ P  }: M9 X1 t. g, S3 K9 q
仔细核对就行了。比如上面的,就是把Server写成了sever,常见的其他的还有把DataBase写成DateBase等。这个要求你必须认真检查,改正后,错误就解决了。

; Y8 B6 Z. A9 Q/ c1 x% V常见错误2! o  U- ^. n1 d0 [* @. }& a

2 v) `: K! b5 f, V
【C#上位机开发数据库常见问题】错误提示:ConnectionString属性尚未初始化。
; \# z" X3 k5 K
* {4 `( m4 E4 y
《C#程序》的错误提示:
6 K( H: B1 ?* s5 W( P) `

) f. G2 u6 p. a& k* Z
2 ^9 H3 N( r7 w6 B) ?; k
解决方案
/ b+ R) E0 C7 A. g% D
这种错误很容易解决,就是new 连接对象的时候,忘记把连接字符串放进去了,按照如下改正即可:
" c! B# P0 Q9 @+ l0 m
  X6 T2 n/ K( d0 w* g! V
5 z* u* c( E5 w1 Y: |
常见错误3+ R: f8 @& e6 k) W( e9 l1 I+ c
0 n! H# i  v/ {: h) j! [
【C#上位机开发数据库常见问题】错误提示:Connection属性尚未初始化。
# u) t7 m# b& n2 w' R) Z
《C#程序》的错误提示:
  T4 \$ D  |- _- v9 }& o& t
) D9 r3 }6 b- \' W" \0 w, D
4 Q: K2 {" z6 S$ a
【问题分析】此问题和上面的问题有些类似,都是属性尚未初始化,但是这里的问题是指Connection,这个是连接对象,而上面的是连接字符串ConnectionString,所以问题解决方式一样,但是位置不一样。Connection对象属性未初始化问题是因为SqlCommand构造的时候,没有传递进去。

% G/ S; x4 \4 [7 e! ]! i解决方案" F1 ?% \; A" l6 G% n8 c. T0 S
9 H4 e$ [- t) H/ f& c
所以按照如下修改即可:

  k& H1 Z# i( ]+ |& p! ?- _
+ J. m! A3 C* Z& D+ ]6 W

/ P7 @2 K: @, b4 z5 D9 ^" s7 y常见错误4
6 Q6 ]9 C- G1 H- C" g, E9 r8 \2 N
+ a# I0 e# o: g, y+ e' E- s( p
【C#上位机开发数据库常见问题】错误提示:列名“EmployeName”无效。
/ I3 |' ]: p+ S! w
《C#程序》的错误提示:
8 I1 P$ r2 I% {, B. A
. D8 y0 ~) W$ E2 {
. t1 h) |: V  k
解决方案
8 g& l* I# [& J- C8 u
) b# J- O; M$ @, [2 y# z
主要提示列名无效的,请检查提示的这个列名称是不是真的写错了,也就是从SQL语句中去直接查看(这个不要调试,直接看就可以),如果真的写错了,就修改,比如上面的EmployeeName确实写成了EmployeName,也就是少了一个e,所以提示错误。主要改过来就行了。

+ h3 T# r* J9 y, b& N4 Q常见错误5
. P2 l+ `: u' Y' u! C, E
/ G3 o- Z- o- e3 p9 W1 M
【C#上位机开发数据库常见问题】错误提示:列名“韩老师”无效。

/ S! H( f  g% h: |" Z  N
《C#程序》的错误提示:

, E  R8 F* Y5 i3 m. j0 t
' M+ x  b. r3 r' N

5 d/ m% T+ _" ?+ a1 E5 d. E% B6 a解决方案
- d: y( U8 P, c5 S0 `, c1 w$ i7 b
9 H. w. W* y) }+ W: a" V. z4 T
都是同样的错误告诉我们列名无效,但是现在这个列并不是真实的列名称,而是我们给列对应的一个值,这种情况,通常是使用格式化的SQL语句时,需要添加单引号的占位符,却没有添加造成的,很明显第一个占位符 {0} 因为是字符串类型,必须添加单引号,添加后,错误就没有了。
" Y# E+ M6 ^: I! M" n
6 q4 ?  j* R' Q6 r8 U$ {- K/ R9 @  ^

# X- o2 b* ?; n# _常见错误64 X4 R" n5 g+ u; v: z- o$ x
0 t, J( X# Q  U. k7 W& V
【C#上位机开发数据库常见问题】错误提示:对象名“Employeeinner”无效。

+ T) i: O+ [9 A
《C#程序》的错误提示:
5 R/ v$ d( L# a6 ~, e/ M1 l6 H  L( @, F
3 R! r1 z6 U6 ?7 l  n

, i9 ?9 l2 v# e1 \# Y
解决方案

' V& k% j$ C( F* D: e0 d5 p
其实本错误如果细心的话,是可以直接看出来的,C#中把数据库中的表,也称为对象,所以这里说的对象名无效,也就是说表的名称无效,而在查询语句中,我们用的表是Employee,这里很显然后面多了inner,也就是说inner和Employee直接缺少的空格,所以加上空格问题就马上解决。

" t% x& q* D7 x+ }3 B7 u
, l- P. ^. f8 p+ V- I
: a* q3 K" T! U8 t
常见错误7: k0 S( A/ Z( T2 h& |
# |* H. E! J* ^+ T8 z2 N
【C#上位机开发数据库常见问题】错误提示:从字符串转换日期和/或时间时,转换失败。

" e1 d6 o3 }7 y. K& Y
《C#程序》的错误提示:

9 c! e! h; x) e' x2 g$ p' j" X, y: E

1 D* `  ]6 W; w
解决方案

& t: ?1 e& x" R0 C5 a* y; q# m
反射调试日期或时间,转换无效的,我们就直接定位到“日期”字段对应的值,在SQLServer里面对日期的格式要求非常严格,我们常用的日期格式为“2022-01-01或2022/02/02”,(但是也有其他格式,但是不推荐)所以,带着汉字的“年月日”这种格式肯定是不行的,有时候,有的学员可能也会用到,带着“星期”的日期,这种都是不符合规范的。所以上面的问题解决,就是直接把“2014年1月18日”这种日期格式改成“2014-01-18”就可以了。

1 K% N2 v/ Z& }( `
7 m( f  V3 d5 x# G. T& D1 n8 v. b

, v2 X' t5 C5 d5 ]/ n6 u常见错误85 Z, _, y7 e* p1 ]8 Y4 u; g5 P
; Y" v: x$ b2 H3 {, T" R# h
【C#上位机开发数据库常见问题】错误提示:输入的字符串格式不正确。

+ E: B( U3 D) _/ m$ R
《C#程序》的错误提示:
; Y) Q, s. \  k) }4 i8 y: \4 i* W

# m" L: F5 Q) C( ]8 M% d
- {# c: w1 {9 d) M/ H- J0 e
解决方案
& G8 S3 A4 V3 x5 C" U5 z
) v# {+ `. B! I& ?0 n* x2 m
这种错误出现的位置和前面的统称都不一样,是在字符串格式的位置出现的,所以,我们重点观察占位符,如果仔细观察的话,会发现,在占位3个位置,把花括号写成了中括号,从而导致这个错误,这种错误希望大家能记住排查问题的要点,归根结底还是要仔细。

  o4 p8 j3 O3 h' I7 O# T9 R. g2 H2 Y) b
1 B* |$ y! ]7 w4 T2 N! A
常见错误9
; W7 u/ s7 W1 R6 ?+ f  A: M) z' G; S% B: T5 k& i2 k% d
【C#上位机开发数据库常见问题】错误提示:输入的字符串格式不正确。

' [( L9 K- B/ U/ T
《C#程序》的错误提示:

' s6 A" n$ K6 |+ y3 f4 v5 X  y2 L8 K! a  v; ]) M7 S0 |
2 f% P3 Y  v) O9 J
【问题分析】:在我们学习DataReader对象的时候,其实重点强调了DataReader对象在数据没有读取完毕之前,是不能关闭的,因为这个对象要求必须保持数据库的连接,而这里提示阅读器关闭,那肯定程序里面调用了Close()方法,其实打开后台的通用类看一下就明白了。
4 p$ M5 s- q4 a9 U: w
解决方案

: E9 g$ X/ u6 ]; {+ u
把整个finally全部删掉就行了。
: B1 d5 t% ^! I- @, d+ @
) V* {! B/ B" l! J5 L
  z/ r- s* s+ S% G' P5 ?
总结
+ c# Q# ], @5 f# u3 ^- w; }# R& c2 v$ O
以上就是大家学习数据库时可能会出现的一些零散问题,针对这些问题老师们特此做了总结归纳,希望可以帮助大家。
  V1 C3 F5 @/ e+ r

! y7 [- H9 `- m$ h, J; }
' d) \$ ]; b6 e9 ~4 x, k
-END-
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

16

金钱

0

收听

0

听众
性别

新手上路

金钱
16 元