ADO.NET创建基于服务的数据库并运用步骤如下:
0.打开VS,创建相应的解决方案,建立相应的窗体应用程序。
1.建立基于服务的附加数据库。
2.建立新表方法一:直接建立新表的方法,注意其中设置一个完全无其他意义的字段作为(如ID)主键,并设置自增种子,一般步长为一,各字段都要选择合适的数据类型,如完全是英文的只要Varchar(50)就够了,如果含有中文(如昵称,用户名,密码)等多种字符串混合使用时,一定要使用ncvarchar(50),主键值一般设为int ,(记住,主键值是只读字段,会自动增长,删去中间记录,也不会连续,),一般数据库分为应用数据库和逻辑数据库,较常使用的是逻辑数据库,其ID的建立方法,也可使用VS内置的GUID生成工具,简单的语句是:Guid id = Guid.NewGuid(); Console.WriteLine("Guid ={0}",id);
3.建立窗体应用程序,将相应的控件放到窗体上,如:Button,Label,TextBox,CmboBox等等,记住要将使用到的无形控件也一起拖到界面上,他会在下方显示,这样才能使用,更改想应的控件的Text属性为要显示的功能名称,改Name属性为便于熟记的控件名(如 btnImport为登陆按钮)然后是双击对应的控件以进入后台进行编码,或者直接去属性栏的事件(闪电符号)栏直接双击相应的事件进入后台编码,这里在使用到的连接数据库的控件有:CmboBox(),他有Items属性,为其要显示的内容,使用方法如Cmb省.Items.Add(p1);其中p1为一个类的对象,这样默认添加的是P1的toString方法,而一个类的toString方法默认是打印全称的类名,所以使用到要求打印成员名时,要写一个重构函数,renturn 成员名;例如:
4.引用配置文件,在引用里将System.Configration引入。(最终改为配置文件里引用最好,但是他的dll动态连接库没有自动引入,需要添加引用 System.configuration,并using进来才行,接下来用下面的语句引用,使用连接字符串的名字)
5.在对应的项目中添加App.Config,使用顺序为:添加App.Config文件->添加->新建项->常规->应用程序配置文件->App.Config,其是.NET程序通用的配置文件,在ASP.NET也同样使用。具体使用语法为:
附加:以上方法是为了方便转移数据库而设置的为编译全局变量字符串配置文件
,还有一个写法是:
//声明静态字符串替代全局常字符串.........最好的方法是到App.cinfig里写连接字符串(类似于C语言中的.h头文件可以包含很多#define 和如# include <stdio.h>等文件)
//private const string CoonStr = @"Data Source = .\SQLEXPRESS;AttachDBFilename = |DataDirectory|\SS.mdf;Integrated Security = True; User Instance =True";
但是这样还是会编译在文件中,变得不可改,在换数据库时还得重新编译
6.建立数据库连接,具体语法如:
0.打开VS,创建相应的解决方案,建立相应的窗体应用程序。
1.建立基于服务的附加数据库。
2.建立新表方法一:直接建立新表的方法,注意其中设置一个完全无其他意义的字段作为(如ID)主键,并设置自增种子,一般步长为一,各字段都要选择合适的数据类型,如完全是英文的只要Varchar(50)就够了,如果含有中文(如昵称,用户名,密码)等多种字符串混合使用时,一定要使用ncvarchar(50),主键值一般设为int ,(记住,主键值是只读字段,会自动增长,删去中间记录,也不会连续,),一般数据库分为应用数据库和逻辑数据库,较常使用的是逻辑数据库,其ID的建立方法,也可使用VS内置的GUID生成工具,简单的语句是:Guid id = Guid.NewGuid(); Console.WriteLine("Guid ={0}",id);
3.建立窗体应用程序,将相应的控件放到窗体上,如:Button,Label,TextBox,CmboBox等等,记住要将使用到的无形控件也一起拖到界面上,他会在下方显示,这样才能使用,更改想应的控件的Text属性为要显示的功能名称,改Name属性为便于熟记的控件名(如 btnImport为登陆按钮)然后是双击对应的控件以进入后台进行编码,或者直接去属性栏的事件(闪电符号)栏直接双击相应的事件进入后台编码,这里在使用到的连接数据库的控件有:CmboBox(),他有Items属性,为其要显示的内容,使用方法如Cmb省.Items.Add(p1);其中p1为一个类的对象,这样默认添加的是P1的toString方法,而一个类的toString方法默认是打印全称的类名,所以使用到要求打印成员名时,要写一个重构函数,renturn 成员名;例如:
public override string ToString
{
return Name;
}//override是覆盖元原来的ToString()方法,相当于重构函数,
ToString()方法返回什么,就显示什么
也可以设置CmBox的DisplayMenber属性为某一对象的成员名,是之只显示被添加对象的某一成员的值;另外还用到导出文件路径的对话框FolderBrowserDialog,OpenFileDialog,SaveFileDialog等,将这些对话框事件写入如Button等事件中,Button有个ShowDialog()方法,可以弹出某一对话框,并利用对话框的返回值,确定用户要进行的下一步操作:具体语法如: if (odfImport.ShowDialog() != DialogResult.OK)
{
return;
}
4.引用配置文件,在引用里将System.Configration引入。(最终改为配置文件里引用最好,但是他的dll动态连接库没有自动引入,需要添加引用 System.configuration,并using进来才行,接下来用下面的语句引用,使用连接字符串的名字)
5.在对应的项目中添加App.Config,使用顺序为:添加App.Config文件->添加->新建项->常规->应用程序配置文件->App.Config,其是.NET程序通用的配置文件,在ASP.NET也同样使用。具体使用语法为:
string ConnStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
//在App.Config中为:
<connectionStrings>
<add name="ConnStr" connectionString="Data Source = .\SQLEXPRESS;AttachDBFilename = |DataDirectory|\Phone.mdf;Integrated Security = True; User Instance =True"/>
</connectionStrings>
附加:以上方法是为了方便转移数据库而设置的为编译全局变量字符串配置文件
,还有一个写法是:
//声明静态字符串替代全局常字符串.........最好的方法是到App.cinfig里写连接字符串(类似于C语言中的.h头文件可以包含很多#define 和如# include <stdio.h>等文件)
//private const string CoonStr = @"Data Source = .\SQLEXPRESS;AttachDBFilename = |DataDirectory|\SS.mdf;Integrated Security = True; User Instance =True";
但是这样还是会编译在文件中,变得不可改,在换数据库时还得重新编译
6.建立数据库连接,具体语法如:
using (SqlConnection conn = new SqlConnection(ConnStr))
{
//实现了IDisposable接口,用using括起,便于自动释放,在using()后调用了IDisposabl方法,它先判断有无conn.Close();如果没有,先进行关闭,在释放
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from city where ProID=@ProID";
cmd.Parameters.Add(new SqlParameter("ProID", ProID));
using (SqlDataReader dateReader = cmd.ExecuteReader())
{
cmd.CommandText = "select count(*) from T_Users where UserName=@UN and Password=@P";//@加占位符,不会拼,直接取站位字符串查询后对比//必须声明标量变量 "@"。错误报出,表示@后和变量间有空格 ‘@’周围存在问题,表示周围字符错误或中英文使用错误,拼接方法容易造成//输入任意用户名,输入此永真密码,总会进入数据库:1' or '1'='1 SQL注入方法
cmd.Parameters.Add(new SqlParameter("UN",username));
cmd.Parameters.Add(new SqlParameter("P", password));
int i = Convert.ToInt32(cmd.ExecuteScalar());//当提示对表名无效时,说明表名错误
if (0 < i)
{
Console.WriteLine("登陆验证完成!");
}
else
{
Console.WriteLine("用户名或密码错误!");
}
//循环读取记录的一种方法
//cmb市.Items.Clear();
//while (dateReader.Read())
//{
//读取字符串并声明一个字符串接收
// string cityName = dateReader.GetString(dateReader.GetOrdinal("cityName"));
//cmb市.Items.Add(cityName);
// }
}
}