Access 使用总结一篇
最近帮朋友做了个小项目。遇到了一些问题,记录如下
1.如何使用Access两年前用过一点Access,感觉它小问题很多,就没有再用。这次的程序是放在千兆宽网的虚拟主机上,这个虚拟主机不支持Sqlite,读取数据的时候是好的,只要往数据库里边写东西,就会报错,Some Disk I/O Error Occured。很神奇,换了一个虚拟主机试试,没有问题。说明不是我程序的问题。后来只能换成Access。用ADO.NET读取数据库其实都差不多,主要就是一个连接字串的问题,还有就是一些数据库差异要注意。
1.1 数据库连接串
1.2 使用
在程序中使用是很简单的,只是把Connection,Command之前的前缀换掉就可以了。举一个例子:
代码如下:
public DataTable GetAll(string num,int min,int startRecord, int pageSize)
{
string sql = string.Format("select Num ,minPrice ,isUsed from PhoneNumber where Num like '{0}%' and isUsed=0", num);
if (min != 0)
{
sql += "and minPrice=@p1";
}
using (OleDbConnection conn = new OleDbConnection(SqlHelper.ConnStr))
{
conn.Open();
OleDbCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
if (min != 0)
cmd.Parameters.AddWithValue("p1", min);
OleDbDataAdapter adp = new OleDbDataAdapter(cmd);
DataTable table = new DataTable();
adp.Fill(startRecord,pageSize,table);
return table;
}
}
当然还要添加using:using System.Data.OleDb;
using System.Data;ADO.NET的处理方式都是很类似的,事实上,ADO.NET有一套以Db为前缀的Connection,Command等类,这些具体的类都是继承自DbConnection,所以看起来都是一样的。
1.3 差异
上面提到,Access是很诡异的。以下列举一些我遇到的:
1.3.1 user 是关键字,如果有表名或者列名是user而没有加中括号,是会出错的。当然,一致地在所有的表名和列名外加中括号是一个良好的编程习惯。
1.3.2 直接插DateTime型的数据是会报错的,即使数据库里的字段类型确实是Date,插入的方式是把C#的DateTime型ToString()过后再插入。
1.3.3 没有bool型,或者bit型,叫yesno……
1.3.4一个命令里边不支持多条sql。这个限制也很讨厌,每次执行一个command的时候里面只能包含一条sql,非常不方便,即使是小巧如Sqlite的数据库也没有这个限制。
1.3.5 参数顺序的问题. 声明的参数顺序必须要和你往command里边添加参数的声明一致.否则很有可能什么错也不报,就是不影响结果(update的时候,其他时候没试过). Access真是极品数据库啊!!例如
代码如下:
string sql = "update [user] set WorkField=@p1, Company=@p3,IC=@p4,Contact=@p5,Phone=@p6,Mobile=@p7,Address=@p8,Email=@p9,Introduction=@p10 "
+ "where username=@p2";
cmd.CommandText = sql;
cmd.Parameters.AddWithValue("p1", entity.WorkField);
cmd.Parameters.AddWithValue("p3", entity.Company);
cmd.Parameters.AddWithValue("p4", entity.IC);
cmd.Parameters.AddWithValue("p5", entity.Contact);
cmd.Parameters.AddWithValue("p6", entity.Phone);
cmd.Parameters.AddWithValue("p7", entity.Mobile);
cmd.Parameters.AddWithValue("p8","");
cmd.Parameters.AddWithValue("p9", string.IsNullOrEmpty(entity.Email)?" ":entity.Email);
cmd.Parameters.AddWithValue("p10", string.IsNullOrEmpty(entity.Introduction)?" ":entity.Introduction);
cmd.Parameters.AddWithValue("p2", entity.UserName);
int i= cmd.ExecuteNonQuery();这样是可以的,但是把
cmd.Parameters.AddWithValue("p2", entity.UserName);
提到前面去,就不行了,更新不了. 幸好在csdn上搜到有人也问这个问题,不然都不知道怎么搞。
2.z-index的问题。
包含在其他HTML元素内部的HTML元素的z-index只是相对于位于同一层次的元素的z-index,对其父元素之外的元素的z-index没有影响,也就是说如果父元素的z-index很小,比如是0,内部元素的z-index很高,1000.父元素相邻的元素的z-index是2,如果内部元素溢出去了,和相邻元素重合,那么被覆盖的还是内部元素。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











1. Windows 11에서 설정을 엽니다. Win+I 단축키나 다른 방법을 사용할 수 있습니다. 2. 앱 섹션으로 이동하여 앱 및 기능을 클릭합니다. 3. 백그라운드에서 실행되는 것을 방지하려는 애플리케이션을 찾으세요. 점 3개 버튼을 클릭하고 고급 옵션을 선택합니다. 4. [백그라운드 애플리케이션 권한] 섹션을 찾아 원하는 값을 선택하세요. 기본적으로 Windows 11은 전원 최적화 모드를 설정합니다. 이를 통해 Windows는 애플리케이션이 백그라운드에서 작동하는 방식을 관리할 수 있습니다. 예를 들어, 배터리를 절약하기 위해 배터리 절약 모드를 활성화하면 시스템은 모든 앱을 자동으로 닫습니다. 5. 애플리케이션이 백그라운드에서 실행되는 것을 방지하려면 [안함]을 선택합니다. 프로그램이 알림을 보내지 않거나 데이터를 업데이트하지 못하는 경우 등을 확인할 수 있습니다.

DeepSeek은 파일을 PDF로 직접 변환 할 수 없습니다. 파일 유형에 따라 공통 문서 (Word, Excel, PowerPoint) : Microsoft Office, LibreOffice 및 기타 소프트웨어를 사용하여 PDF로 내보내십시오. 이미지 : 이미지 뷰어 또는 이미지 처리 소프트웨어를 사용하여 PDF로 저장하십시오. 웹 페이지 : 브라우저의 "PDF로 인쇄"기능 또는 전용 웹 페이지에서 PDF 도구를 사용하십시오. 드문 형식 : 오른쪽 변환기를 찾아 PDF로 변환하십시오. 올바른 도구를 선택하고 실제 상황에 따라 계획을 개발하는 것이 중요합니다.

Java의 DAO(Data Access Object)는 애플리케이션 코드와 지속성 계층을 분리하는 데 사용되며 다음과 같은 장점이 있습니다. 분리: 애플리케이션 로직에서 독립되어 수정이 쉽습니다. 캡슐화: 데이터베이스 액세스 세부 정보를 숨기고 데이터베이스와의 상호 작용을 단순화합니다. 확장성: 새로운 데이터베이스 또는 지속성 기술을 지원하기 위해 쉽게 확장할 수 있습니다. DAO를 사용하면 애플리케이션은 데이터베이스 세부 정보를 직접 처리하지 않고도 엔터티 생성, 읽기, 업데이트 및 삭제와 같은 데이터베이스 작업을 수행하는 메서드를 호출할 수 있습니다.

앱을 사용하려고 할 때 "카메라 및 마이크에 대한 접근을 허용할 수 없습니다"라는 메시지가 표시됩니까? 일반적으로 필요에 따라 특정 사람에게 카메라 및 마이크 권한을 부여합니다. 단, 권한을 거부할 경우 카메라와 마이크가 작동하지 않으며 대신 이런 오류 메시지가 표시됩니다. 이 문제를 해결하는 것은 매우 기본적이며 1~2분 안에 완료할 수 있습니다. 수정 1 – 카메라, 마이크 권한 제공 설정에서 직접 필요한 카메라 및 마이크 권한을 제공할 수 있습니다. 1단계 - 설정 탭으로 이동합니다. 2단계 – 개인 정보 보호 및 보안 패널을 엽니다. 3단계 - 거기에서 "카메라" 권한을 켭니다. 4단계 - 내부에서 휴대폰 카메라에 대한 권한을 요청한 앱 목록을 찾을 수 있습니다. 5단계 - 지정된 앱의 "카메라"를 엽니다.

Java에서 "필드"는 데이터나 상태를 저장하는 데 사용되는 클래스나 인터페이스의 데이터 멤버입니다. 필드의 속성에는 유형(Java 데이터 유형일 수 있음), 액세스 권한, 정적(인스턴스가 아닌 클래스에 속함), 최종(불변) 및 임시(직렬화되지 않음)가 포함됩니다. 필드는 객체 데이터 저장, 객체 상태 유지 등 클래스나 인터페이스의 상태 정보를 저장하는 데 사용됩니다.

Oracle 저장 프로시저 실행 계획은 액세스 경로, 예상 행 수, 조인 순서 및 비용을 포함한 실행 정보를 제공합니다. 실행 계획을 보려면 EXPLAIN PLAN 명령을 실행하고 "실행 계획" 섹션을 찾으세요. 실행 계획에는 헤더와 본문이 포함되어 있으며 ID, 작업 유형, 행 수, 비용, 액세스 경로, 필터 조건, 관련 테이블 및 인덱스, 연결이 있는 경우 연결 순서를 자세히 표시합니다.

Java 리플렉션 메커니즘을 사용하면 프로그램은 소스 코드를 수정하지 않고도 클래스의 동작을 동적으로 수정할 수 있습니다. Class 객체를 통해 클래스를 조작하면 newInstance()를 통해 인스턴스를 생성하고, 프라이빗 필드 값을 수정하고, 프라이빗 메서드를 호출하는 등의 작업을 수행할 수 있습니다. 그러나 리플렉션은 예상치 못한 동작 및 보안 문제를 일으킬 수 있고 성능 오버헤드가 있으므로 주의해서 사용해야 합니다.

Vue에서 iframe 교차 도메인 문제를 해결하는 방법: CORS: 백엔드 서버에서 CORS 지원을 활성화하고 XMLHttpRequest를 사용하거나 API를 가져와 Vue에서 CORS 요청을 보냅니다. JSONP: 백엔드 서버의 JSONP 엔드포인트를 사용하여 Vue에서 JSONP 스크립트를 동적으로 로드합니다. 프록시 서버: 요청을 전달하도록 프록시 서버를 설정하고, Vue에서 타사 라이브러리(예: axios)를 사용하여 요청을 보내고, 프록시 서버 URL을 설정합니다.
