C#窗体应用(.NET)校园一卡通系统
一.开发环境
Visual Studio 2019
SQL SERVER2012
数据库也可以使用VS2019本身自带的数据库
1.Visual Studio 2019下载安装教程
第一步搜索vs2019
第二步进入官网并点击下载Community2019
第三步双击进去点继续进入等待其下载必要的文件,如下图所示。
第四步下载好会出现以下图
选择,net桌面开发以及通用Windows平台开发 右侧需要点击添加SQLSEVERExpress 2016LocaIDB
第五步下载安装位置
点击右下角的安装,就开始下载VS2019了,它会边下载边安装,此过程视自己的网速情况,可能会花费较长时间。如下图所示
详细下载与使用VS2019请到
转载于原文链接:https://blog.csdn.net/weixin_43074474/article/details/108717843
2.VS2019自带数据库的使用与常见错误解决
步骤一:安装VS自带的数据库组件
在选择安装VS组件的时候需要选择数据库组件(一般系统默认勾选),如下图所示。
安装完成后,启动VS软件,查看“视图”中是否有下图所示的两个功能,如下图。
如果两个功能都有证明安装成功,如果只有其中的一个,我们也先来进行数据库连接,查看是否能连接成功。
提示:如过两个功能都有,按照步骤操作
如果只有其中一个,则直接跳到步骤六,
步骤二:测试数据库是否能连接成功
(1)如果视图里面有SQL Server对象资源管理器,选中并打开,如图①②操作所示。
(2)打开成功后,有些可能会自动连接服务器,如果没有自动连接的,选中SQL Server单击鼠标右键,选择添加连接,如下图所示。
(3)然后打开本地,选择其中一个服务器,单击连接。如同所示。
(4)连接成功后,就会出现连接的服务器,以及对应的数据库,如图所示。
步骤三:新建数据库
(1)选中数据库,单击鼠标右键,选择连接数据库,如图所示。
(2)输入新建数据库的名称,以及保存的路径(一般默认),如图所示。
(3)刷新数据库,就会出现,刚才新建的数据库,如图所示。
步骤四:新建表
- 展开数据库,选择数据库表,单击鼠标右键,选择新建表,如图所示。
- 添加新建表后,会展示数据库表,在表格输入新建表的内容,如图所示。
数据类型我一般定义的varchar(10)
- 新建完表格后,可以进行数据库表名的更改,更改完成后,选择更新,如图所示。
- 单击更新后,选择更新数据库,如图所示。
- 更新成功后,展开数据库表,可以看到刚才新建的数据库表,因此数据库的新建就完成了,如图所示。
步骤五:代码测试数据库是否能连接
- 在工具箱中找到"Button"控件,拖入到窗体中,双击进入到代码编写的位置,如图所实。
- 添加连接数据库的空间命名与数据库连接的代码,如图所示。
- 如何找服务器中找连接数据库字符串
选择连接成功的服务器,单击鼠标右键,选择属性,如图所示。
在属性中找到连接数据库的字符串,选择全部复制,然后在粘贴到代码当中(注意:在代码中需要用双引号,如果有单斜杠,变为双斜杠),如图所示。
步骤六:服务资源管理器的连接数据库
- 同样在视图中找到 “服务资源管理器”,单击打开,如图所示。
- 选中数据连接,单击鼠标右键,选择添加连接,如图所示。
- 选择SQLServer,单击确定,如图所示。
注意:不要选错了数据库
- 在添加连接的界面,进行刷新,看看下拉框有没有自动显示服务器名称,如果有直接选择,然后单击测试连接。如果没有我们先输入自己电脑的名称,同样测试一下,看能不能连接,如果能连接直接单击确定,不能接着操作(5);
- 如果以上两种都不可以,那么我们直接在服务名中输入(localdb)\MSSQLLocalDB,然后测试连接。
- 连接成功后,如下图所示。
接下来的新建表格与代码测试,与上述的步骤四,步骤五操作类似。
- 如果还是测试失败,如图所示。
解决方法:
- 打开路径“C:\Users\xp\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances”,查看下有没有实例名,如下图所示。
如果有,则在连接服务的时候,输入对应的服务器,如图所示。
- 如果没有,则打开路径“C:\Program Files\Microsoft SQL Server”在这些文件夹中找到SqlLocalDB.exe应用,如图所示。
- 如果有这个应用程序,执行下面的操作,也可以使用快捷方式:Window+R;输入cmd。
- 打开效果如图所示。
然后输入 cd.. 回到最初始位置。
- 输入SqlLocalDB.exe路径,如图所示。
- 使用命令SqlLocalDB create MSSQLLocalDB -s创建一个实例,如果实例名中有空格则需要加双引号。如图所示。
- 创建成功后,打开路“C:\Users\xp\AppData\Local\Microsoft\Microsoft
SQL Server Local DB\Instances”,查看下有没有刚才创建的实例名。如果有则在连接数据库中输入创建的实例名。如果没有,重启电脑重新操作。如果还不能解决,查看错误解决方法。
错误解决方法:
以上两种方法都不能进行数据库连接?
方法一:添加数据库组件
(1)打开安装软件,选择修改,如图所示。
(2)选择SQL Server Express 2016LocalDB数据库组件,不同的VS版本不同,如图所示,然后单击安装。
方法二:卸载现有的DB数据库,重新安装一个。
无法新建数据库表
- 没有新建数据库表这个选项,如图所示。
- 解决方法
方法一:代码创建
string sql= "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=eq;Integrated Security=True;Pooling=False";
Connection = new SqlConnection(sql);
Connection.Open();
if (Connection.State == ConnectionState.Open)
{
MessageBox.Show("","连接成功");
}
//以上是连接数据库
//下面是新建数据库表
using (SqlCommand command2 = new SqlCommand("CREATE TABLE Students(id int IDENTITY(1, 1) PRIMARY KEY not null,basename char(50),category char(10))", Connection))
{ command2.ExecuteNonQuery(); //执行指令
}
注释:Students表示新建的表名,蓝色表示创建的列名
方法二:能力有限,还没想到。
插入数据的时候,中文是乱码的解决方法。
在插入的中文数据前加上一个N。
insert into User(uid,username,password) values('111',N'中国','123')
注意:自带数据进行数据操作的时候,表名的编写: dbo.[表名]
二:数据库的设计
1.建三个表
s_user,t_user,Student
sql server2012数据库
选择自己要引用的选项,此时我们选择的类
命名SqlHelp.cs
代码为:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.IO;
using System.Data;
using System.Configuration;
using System.Text.RegularExpressions;
namespace yikatong01
{
class SqlHelp
{
///私有属性:数据库连接字符串
///Data Source=(Local) 服务器地址
///Initial Catalog=DB 数据库名称
///User ID=sa 数据库用户名
///Password=123456 数据库密码
private const string connectionString = "Data Source=(Local);Pooling=False;Max Pool Size = 1024;Initial Catalog=yikatong;Persist Security Info=True;User ID=sa;Password=zhaohaitao";
/// <summary>
/// sqlHelp 的摘要说明:数据库访问助手类
/// sqlHelper是从DAAB中提出的一个类,在这里进行了简化,DAAB是微软Enterprise Library的一部分,该库包含了大量大型应用程序
/// 开发需要使用的库类。
/// </summary>
public SqlHelp()
{
//无参构造函数
}
public static SqlConnection conn;
//打开数据库连接
public static void OpenConn()
{
string SqlCon = connectionString;//数据库连接字符串
conn = new SqlConnection(SqlCon);
if (conn.State.ToString().ToLower() == "open")
{
}
else
{
conn.Open();
}
}
//关闭数据库连接
public static void CloseConn()
{
if (conn.State.ToString().ToLower() == "open")
{
//连接打开时
conn.Close();
conn.Dispose();
}
}
// 读取数据
public static SqlDataReader GetDataReaderValue(string sql)
{
OpenConn();
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader dr = cmd.ExecuteReader();
CloseConn();
return dr;
}
// 返回DataSet
public DataSet GetDataSetValue(string sql, string tableName)
{
OpenConn();
SqlDataAdapter da;
DataSet ds = new DataSet();
da = new SqlDataAdapter(sql, conn);
da.Fill(ds, tableName);
CloseConn();
return ds;
}
// 返回DataView
public DataView GetDataViewValue(string sql)
{
OpenConn();
SqlDataAdapter da;
DataSet ds = new DataSet();
da = new SqlDataAdapter(sql, conn);
da.Fill(ds, "temp");
CloseConn();
return ds.Tables[0].DefaultView;
}
// 返回DataTable
public DataTable GetDataTableValue(string sql)
{
OpenConn();
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
da.Fill(dt);
CloseConn();
return dt;
}
// 执行一个SQL操作:添加、删除、更新操作
public void ExecuteNonQuery(string sql)
{
OpenConn();
SqlCommand cmd;
cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
cmd.Dispose();
CloseConn();
}
// 执行一个SQL操作:添加、删除、更新操作,返回受影响的行
public int ExecuteNonQueryCount(string sql)
{
OpenConn();
SqlCommand cmd;
cmd = new SqlCommand(sql, conn);
int value = cmd.ExecuteNonQuery();
return value;
}
//执行一条返回第一条记录第一列的SqlCommand命令
public object ExecuteScalar(string sql)
{
OpenConn();
SqlCommand cmd;
cmd = new SqlCommand(sql, conn);
object value = cmd.ExecuteScalar();
return value;
}
// 返回记录数
public int SqlServerRecordCount(string sql)
{
OpenConn();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = sql;
cmd.Connection = conn;
SqlDataReader dr;
dr = cmd.ExecuteReader();
int RecordCount = 0;
while (dr.Read())
{
RecordCount = RecordCount + 1;
}
CloseConn();
return RecordCount;
}
///<summary>
///一些常用的函数
///</summary>
//判断是否为数字
public static bool IsNumber(string a)
{
if (string.IsNullOrEmpty(a))
return false;
foreach (char c in a)
{
if (!char.IsDigit(c))
return false;
}
return true;
}
// 过滤非法字符
public static string GetSafeValue(string value)
{
if (string.IsNullOrEmpty(value))
return string.Empty;
value = Regex.Replace(value, @";", string.Empty);
value = Regex.Replace(value, @"'", string.Empty);
value = Regex.Replace(value, @"&", string.Empty);
value = Regex.Replace(value, @"%20", string.Empty);
value = Regex.Replace(value, @"--", string.Empty);
value = Regex.Replace(value, @"==", string.Empty);
value = Regex.Replace(value, @"<", string.Empty);
value = Regex.Replace(value, @">", string.Empty);
value = Regex.Replace(value, @"%", string.Empty);
return value;
}
}
}
三:窗体代码的主要编写
1.从数据库中获取账号与密码
Form s_main = new sMain(t1.Text);
string username = t1.Text;
string password = "";
string selectSql = "select s_mima from s_user where s_name='" + username + "'";
SqlHelp sqlHelper = new SqlHelp();
password = Convert.ToString(sqlHelper.ExecuteScalar(selectSql));
if (t1.Text == username && t2.Text == password)
{
s_main.Show();
this.Visible = false;
四:项目文件整合下载
链接:https://pan.baidu.com/s/1q5tu2cmklmjnouyvsr86-g
提取码:7sda
其他详细问题请到评论区留言