微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ADO.NET应用测试

昨天架设了ASP.NET的三层架构,但是到最后发现不会连接数据库。晚上找了点资料大部分时候是用ADO.NET。为了方便先建一个测试项目测试数据库连接,连接sqlserver数据库具体实现如下:

using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.sqlClient;

namespace ToTesting
{
    class DBconnTesting
    {
        public static void Main(string[] args)
        {
            /*1、拼接连接字符串string strCon="Server=数据库服务器名(127.0.0.1);Integrated Security=sspI(安全策略是否使用windows用户名登录);Database=mydatabase(数据库名);User ID=Ya****ng;Password=***;pooling=false(是否使用连接池)";//必须写用户名密码。不写会出错
             *2、创建Connection的一种数据库对象。sqlConnetion conn =new sqlConnection(strCon);
             *3、打开连接conn.open();
             *4、拼接sql语句string strsql="select * from tb_AdminUser";
             *5、创建Command对象sqlCommand com=new sqlCommand(strsql,conn);
             *6、创建数据读取DataReader对象接受数据库查询结果,sqlDataReader sdr=com.ExecuteReader();
             *7、处理读取到的数据if(sdr.Read()){……}
             */
            sqlConnection conn = new sqlConnection(@"Server=218.198.33.210/;Integrated Security=false;DataBase=DB_Zyyy;User ID=Ya****ng;Password=***;pooling=false");
            //sqlConnection conn = new sqlConnection(@"Data Source=218.198.33.210/;Initial Catalog=DB_Zyyy;Persist Security Info=True;User ID=Ya****ng;Password=***;");
            //sqlConnection conn = new sqlConnection(@"Server=502SERVER/;Database=DB_Zyyy;User Id=Ya****ng;Password=***;");
            conn.open();


 /*        string strsql = "select * from  tb_AdminUser";
            sqlCommand com = new sqlCommand(strsql,conn);
            sqlDataReader sdr = com.ExecuteReader();
      


            //com.ExecuteNonQuery;//返回执行T-sql语句影响的行数
            //com.ExecuteScalar;//返回查询结果的第一行第一列
            //com.ExecuteXmlReader;//返回一个XmlReader对象
            //com.ExecuteReader;//返回一个sqlDataReader对象
            /*
             * 传说ADO.net中通过sqlConnetion类创建到sqlServer数据库的连接
             * sqlConnection代表一个数据库连接ADO.NET中的连接等资源都实现了
             * Idisposable接口,可以使用using进行资源管理
             * 具体实现如下:
             */
            using (sqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText ="select count(*) from  tb_AdminUser where i_Id=@ID and vc_UserName=@UName";
                cmd.Parameters.Add(new sqlParameter("ID","1"));
                cmd.Parameters.Add(new sqlParameter("UName","admin"));
                int i=Convert.ToInt32(cmd.ExecuteScalar());
                if (i>0)
                {
                    Console.WriteLine("查询成功"+i);
                    Console.ReadKey();
                }
                else
                {
                    Console.WriteLine("查询失败"+i);
                    Console.ReadKey();
                }           

        }
    }
}

***一些解释**********************************************************
连接字符串:
1、类似使用windows登陆
Data Source=数据库服务器名(或者IP地址)
如果连接的是本地数据库实例,服务器名可以写成"."或者"localhost"或者"local"
Initial Catalog=数据库
使用集成安全连接:Integrated Security=True//说明使用的是windows身份验证
最终结果:
Data Source=服务器名;Initial Catalog=数据库名;Integrated Security=True
2、类似使用sqlserver用户名密码登陆
使用特定的用户密码连接:User ID=用户名;Password=密码
(UserID 可以简写为uid Password可以简写成pwd
最终结果:
Data Source=数据库服务器名;Initial Catalog=数据库名;User ID=用户名;Pwd=密码
*************************************************************************

 

 ****一些资料********************************************************************************************************

ADO.NET 连接数据库字符串(Oracle、sqlServer、Access、ODBC)
ADO.NET
连接到 sql Server
sql Server .NET Framework 数据提供程序支持类似于 OLE DB (ADO) 连接字符串格式的连接字符串格式。
using (sqlConnection connection = new sqlConnection(connectionString))
{
    connection.open();
    // Do work here.
}
连接到 OLE DB 数据源
OLE DB .NET Framework 数据提供程序通过 OleDbConnection 对象提供与使用 OLE DB 公开的数据源的连接以及与 Microsoft sql Server 6.x 或较早版本(通过用于 sql Server 的 OLE DB 提供程序 (sqlOLEDB))的连接。
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
    connection.open();
    // Do work here.
}
连接到 ODBC 数据源
ODBC .NET Framework 数据提供程序通过 OdbcConnection 对象提供与使用 ODBC 公开的数据源的连接。
using (OdbcConnection connection =  new OdbcConnection(connectionString))
{
    connection.open();
    // Do work here.
}
连接到 Oracle 数据源
Oracle .NET Framework 数据提供程序使用 OracleConnection 对象提供与 Oracle 数据源的连接。
using (OracleConnection connection = new OracleConnection(connectionString))
{
    connection.open();
    // Do work here.
}
OracleConnection nwindConn = new OracleConnection("Data Source=MyOracleServer;Integrated Security=yes;");
nwindConn.open();
以下是连接实例:
ACCESS
string conStr=@"provider=microsoft.Jet.OleDb.4.0;data source=d://accessData.mdb;uid=sa;pwd=dd";

sql SERVER
string conStr=@"Server=bwj;database=demo;uid=sa;pwd=";

ORACLE
string conStr=@"Provider=MSDAORA.1;Password=pwd;User ID=user_name;Data Source=link_str"

 ****一些资料********************************************************************************************************

需要注意的问题都在注释中还有一个问题就是,sql注入的问题,有两种解决办法,

一种是将字符串中的单引号换成双引号:

sqlConnection con=new sqlConnection(strCon);
//可以sql注入
string strsql="select * from scoreTabel where UserName='"+tbUserName.Text+"' and PassWord='"+tbPassWord.Text+"'";
//防止sql注入
string strsql="select * from scoreTabel where UserName='"+tbUserName.Text.Replace("'",""")+"' and PassWord='"+tbPassWord.Text.Replace("'",""")+"'";

 

但是我没有用成功,原理是把用户输入的单引号替换成双引号,但是一对双引号中的单个双引号会引起后面的字符全部变成字符串,无法正常使用,但是可以把单引号替换成空格,我想这个应该是能够实现的。没有测试。

另一种方法是用@占位符,或者叫占位字符串,或者说是参数化:

cmd.CommandText ="select count(*) from  tb_AdminUser where i_Id=@ID and vc_UserName=@UName";
cmd.Parameters.Add(new sqlParameter("ID","1"));
cmd.Parameters.Add(new sqlParameter("UName","admin"));

  

 

if (sdr.Read())
            {
                Console.WriteLine("成功");
                Console.ReadKey();
            }
            else
            {
                Console.WriteLine("失败");
                Console.ReadKey();
            }
            sdr.Close();
            conn.Close();

*/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐