C# WINFORM CS 客户端调服务端程序小源码案例,非直接调数据库

C# WINFORM CS 客户端调服务端程序小源码案例,非直接调数据库,第1张

这样的案例,一定是一个完整的工程,因为涉及到客户端、服务器端、数据库等至少两个子工程,不会太小,只能跟你说下大致方法。

再一个打的工程项目里,新建两个子工程,一个是Winfrom工程,一个Web工程。如果不直接调用数据库,可以在Web工程中新建一个Web服务,将数据库访问相关的代码,写入Web服务,在Winfrom项目中新增服务器引用,引用Web服务,通过Web服务间接读写数据库。

Web服务可以使用加强版的WCF,目前很流行。不直接调用数据库的优点是,客户端不保留数据库连接字,可以保证数据库安全。

环境:c#.2005+Access+ Sql

一、把DataTable插入数据库

public static void DataTableToDB()

{

string _strExcelFileName = @"D:\example.xls"

DataTable dtExcel = ExcelToDataTable(_strExcelFileName,"Sheet1")

for (int i = 0i <dtExcel.Rows.Counti++)

{

InsertDataToAccess(dtExcel.Rows[i][0].ToString(), float.Parse(dtExcel.Rows[i][1].ToString()))

}

}

二、把Excel数据读入DataTable

public static DataTable ExcelToDataTable(string strExcelFileName, string strSheetName)

{

string strConn = "Provider=Microsoft.Jet.OLEDB.4.0" + "Data Source=" + strExcelFileName + "" +"Extended Properties=Excel 5.0"

string strExcel = string.Format("select * from [{0}$]", strSheetName)

DataSet ds = new DataSet()

using (OleDbConnection conn = new OleDbConnection(strConn))

{

conn.Open()

OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, strConn)

adapter.Fill(ds, strSheetName)

conn.Close()

}

return ds.Tables[strSheetName]

}

三、向Access数据库表插入数据

public static void InsertDataToAccess(string _strPara,float _fPara)

{

OleDbConnection oleDbConn = new OleDbConnection()

oleDbConn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0Data Source=C:\ExcelData.mdbUser Id=adminPassword="

oleDbConn.Open()

string strInsertString = "INSERT INTO tb_excelData (strCollumn1,fCollumn2) VALUES (@strCollumn1,@fCollumn2)"

OleDbCommand oComm = new OleDbCommand(strInsertString, oleDbConn)

oComm.Parameters.Add("@strCollumn1", OleDbType.Char , 50)

oComm.Parameters["@strCollumn1"].Value = _strPara

oComm.Parameters.Add("@fCollumn2", OleDbType.Double)

oComm.Parameters["@fCollumn2"].Value = _fPara

ocomm.ExecuteNonQuery()

oleDbConn.Close()

}

#include<stdio.h>

#include<string.h>

#include<conio.h>

#include<stdlib.h>

#include<ctype.h>

#define STACK_INIT_SIZE 10

#define OK 1

#define TRUE 1

#define FALSE 0

#define ERROR 0

struct student /*定义学生类型,用于存放借出的书籍*/

{

int carnum

char lendbook[10]

}student[1000]

struct employ /*定义职工类型*/

{

int employnum

char employname[15]

int employage

char employsex[2]

char employleve[10]

long int employtage

}employ[50]

struct book /*定义书的类型*/

{

int booknum

char bookname[10]

char bookcreat[10]

int turefalse/*用于借书和还书模块判断一本书是否借出的条件*/

}book[1000]

struct car /*借书卡的数据类型*/

{

int carnum

char studentname[10]

int studentclass

}car[100]

huanbook() /*还书函数*/

{

FILE *fp,*fp2/*定义两个文件指针,fp2用于修改数据时设立临时文件用,防止数据遭破坏*/

int i,n

int carnum

char lendbook[10]

printf("请你输入你的卡号\n")

scanf("%d",&carnum)

fp=fopen("car.txt","r")/*读取卡号记录*/

for(i=0fread(&car[i],sizeof(struct car),1,fp)!=0i++) /*for循环判断卡号是否存在*/

{

if(car[i].carnum==carnum) /*卡号存在,进入下一循环*/

{

n=i

fclose(fp)

printf("请输入你要还的书的名字\n")

scanf("%s",lendbook)

fp=fopen("record.txt","r")

for(i=0fread(&student[i],sizeof(struct student),1,fp)!=0i++) /*判断是否借阅了输入的书*/

{

if(strcmp(student[i].lendbook,lendbook)==0) /*借阅了该书,进入下一循环,否则出错显示*/

{

fclose(fp)

fp=fopen("record.txt","r")

fp2=fopen("bookl.txt","w")

for(i=0fread(&student[i],sizeof(struct student),1,fp)!=0i++)

{

if(strcmp(student[i].lendbook,lendbook)==0)

{

continue/*删除还掉的书的借书记录*/

}

fwrite(&student[i],sizeof(struct student),1,fp2)/*写入原来没还的书的记录*/

}

fclose(fp)

fclose(fp2)

fp=fopen("record.txt","w")

fp2=fopen("bookl.txt","r")

for(i=0fread(&student[i],sizeof(struct student),1,fp2)!=0i++)

{

fwrite(&student[i],sizeof(struct student),1,fp)/*将借书记录信息写回*/

}

fclose(fp)

fclose(fp2)

fopen("bookl.txt","w")/*清临时文件的记录*/

fclose(fp2)

fp=fopen("book.txt","r")

fp2=fopen("bookl.txt","w")

for(i=0fread(&book[i],sizeof(struct book),1,fp)!=0i++) /*将书的记录写入临时文件,防止因为修改信息破坏以前的记录*/

{

if(i==n)

{

book[i].turefalse=1

fwrite(&book[i],sizeof(struct book),1,fp2)/*将还的书的原来状态设为无人借阅的*/

continue

}

fwrite(&book[i],sizeof(struct book),1,fp2)

}

fclose(fp)

fclose(fp2)

fp=fopen("book.txt","w")

fp2=fopen("bookl.txt","r")

for(i=0fread(&book[i],sizeof(struct book),1,fp2)!=0i++)

{

fwrite(&book[i],sizeof(struct book),1,fp)/*将临时文件写回*/

}

fclose(fp)

fclose(fp2)

fopen("bookl.txt","w")/*清临时文件*/

fclose(fp2)

printf("还书完毕,按任意键返回\n")

getch()

return 1

}

}

printf("你没有借这样的书,任意键返回\n")/*出错提示*/

fclose(fp)

getch()

return 0

}

}

printf("系统没这样的卡,和管理员联系,按任意键返回\n")/*出错提示*/

fclose(fp)

getch()

}

findbook()

{

FILE *fp

char bookname[10]

int ture,i

fp=fopen("book.txt","r")

printf("请输入你要查找的书名\n")

scanf("%s",bookname)

for(i=0fread(&book[i],sizeof(struct book),1,fp)!=0i++)

{

if(strcmp(bookname,book[i].bookname)==0)

{

if(book[i].turefalse==1)

{

printf("这本书的详细资料是:%d %s %s 此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat)

}

else {printf("这本书已经有人借出\n")fclose(fp)return 0}

fclose(fp)

return FALSE

}

}

printf("没有你要查询的书籍\n")

fclose(fp)

return FALSE

}

findbook1()

{

FILE *fp

char bookcreat[10]

int ture,i

fp=fopen("book.txt","r")

printf("请输入你要查找的作者名\n")

scanf("%s",bookcreat)

for(i=0fread(&book[i],sizeof(struct book),1,fp)!=0i++)

{

if(strcmp(bookcreat,book[i].bookcreat)==0)

{

if(book[i].turefalse==1)

{

printf("这本书的详细资料是:%d %s %s 此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat)

}

else {printf("这本书已经有人借出\n")fclose(fp)return 0}

fclose(fp)

return FALSE

}

}

printf("没有你要查询的书籍\n")

fclose(fp)

return FALSE

}

lendcount()

{

FILE *fp

int i,n=0

fp=fopen("record.txt","r")

for(i=0fread(&student[i],sizeof(struct student),1,fp)!=0i++)

{

printf("卡号:%d 借出的书籍:%s \n",student[i].carnum,student[i].lendbook)

n=n+1

}

fclose(fp)

printf("目前共有%d本书借出\n",n)

printf("按任意键\n")

getch()

return n

}

chabook()

{

char ch5

do

{

printf("---------------欢迎进入图书查询系统!--------------\n")

printf(" 1:<按书名查找>\n")

printf(" 2:<按作者查找>\n")

printf(" 0:<返回>\n")

printf("请输入0--2,其他输入非法!\n")

scanf("%s",&ch5)

switch(ch5)

{

case '1':findbook()getch()break

case '2':findbook1()getch()break

case '0':break

default:printf("无此 *** 作\n")getch()break

}

}while(ch5!='0')

return FALSE

}

lendbook()

{

FILE *fp,*fp2

int i,n

int carnum

printf("请你输入你的卡号\n")

scanf("%d",&carnum)

fp=fopen("car.txt","r")

for(i=0fread(&car[i],sizeof(struct car),1,fp)!=0i++)

{

if(car[i].carnum==carnum)

{

n=i

fclose(fp)

printf("请输入你要借阅的书的名字\n")

scanf("%s",student[n].lendbook)

fp=fopen("book.txt","r")

for(i=0fread(&book[i],sizeof(struct book),1,fp)!=0i++)

{

if(strcmp(book[i].bookname,student[n].lendbook)==0)

{

if(book[i].turefalse==0) {printf("对不起,此书有人借出,请借其他书\n")fclose(fp)getch()return}

else

fclose(fp)

fp=fopen("record.txt","a+")

student[n].carnum=carnum

fwrite(&student[n],sizeof(struct student),1,fp)

fclose(fp)

fp=fopen("book.txt","r")

fp2=fopen("bookl.txt","w")

for(i=0fread(&book[i],sizeof(struct book),1,fp)!=0i++)

{

if(strcmp(book[i].bookname,student[n].lendbook)==0)

{

book[i].turefalse=0

fwrite(&book[i],sizeof(struct book),1,fp2)

continue

}

fwrite(&book[i],sizeof(struct book),1,fp2)

}

fclose(fp)

fclose(fp2)

fp=fopen("book.txt","w")

fp2=fopen("bookl.txt","r")

for(i=0fread(&book[i],sizeof(struct book),1,fp2)!=0i++)

{

fwrite(&book[i],sizeof(struct book),1,fp)

}

fclose(fp)

fclose(fp2)

fopen("bookl.txt","w")

fclose(fp2)

printf("借书完毕,按任意键返回\n")

getch()

return

}

}

printf("不存在这样的书,任意键返回\n")

fclose(fp)

getch()

return

}

}

printf("你的卡号不存在,请申请新卡,按任意键返回\n")

fclose(fp)

getch()

}

carcount()

{

FILE *fp

int i,n=0

fp=fopen("car.txt","r")

for(i=0fread(&car[i],sizeof(struct car),1,fp)!=0i++)

{

printf("第%d张卡<卡号:%d 姓名:%s 班级:%d>\n",i+1,car[i].carnum,car[i].studentname,car[i].studentclass)

n=n+1

}

fclose(fp)

printf("目前共有%d本书\n",n)

printf("按任意键\n")

getch()

}

delcar()

{

FILE *fp,*fp2

int i

int carnum

char choice

fp=fopen("car.txt","r")

fp2=fopen("bookl.txt","w")

printf("请输入你要删除的卡号\n")

printf("如果你输入的卡号存在,系统自动删除该信息!如果不存在,系统不做任何改动\n")

scanf("%d",&carnum)

for(i=0fread(&car[i],sizeof(struct car),1,fp)!=0i++)

{

if(car[i].carnum!=carnum)

{

fwrite(&car[i],sizeof(struct car),1,fp2)

}

}

fclose(fp)

fclose(fp2)

printf("是否真的要删除该卡?删除后该书籍的所有信息将无法恢复《Y/N》\n")

scanf("%s",&choice)

if(choice=='y'||choice=='Y')

{

fp=fopen("car.txt","w")

fp2=fopen("bookl.txt","r")

for(i=0fread(&car[i],sizeof(struct car),1,fp2)!=0i++)

{

fwrite(&car[i],sizeof(struct car),1,fp)

}

fclose(fp)

fclose(fp2)

fp2=fopen("bookl.txt","w")

fclose(fp2)

printf("按任意键返回\n")

getch()

return

}

else

{

printf("按任意键返回\n")

getch()

return

}

}

addcar()

{

FILE *fp

int i=0

fp=fopen("car.txt","a+")

printf("请你输入卡号\n")

scanf("%d",&car[i].carnum)

printf("请你输入学生姓名\n")

scanf("%s",car[i].studentname)

printf("请你输入班级\n")

scanf("%d",&car[i].studentclass)

fwrite(&car[i],sizeof(struct car),1,fp)

fclose(fp)

printf("输入完毕,任意键返回\n")

getch()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10037107.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存