前言 , 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* Z2 ^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- |