zoukankan      html  css  js  c++  java
  • 10直接执行SQL语句

    1 執行SQL的方法

    有两个重要的方法: ExecuteCommand和ExecuteQuery,在DataContext类里。

    1.1 ExecuteCommand

    执行不返回数据行的 SQL 语句。用来执行DML(insert、update、delete) 和 Procedure

    1.2 ExecuteQuery

    直接在数据库执行 SQL 查询,返回数据行。用来执行Select语句。

    2 应用场景

    如果 LINQ to SQL 查询不足以进行特殊化工作,则可以使用 ExecuteQuery 方法执行 SQL 查询,然后将查询结果直接转换为物件。

    3 执行SELECT 语句

     // 執行 SELECT 語句
            private void btnExecSelect_Click(object sender, EventArgs e)
            {
                // {0} 等價于 string.fromat("SELECT * FROM Customers WHERE CustomerID={0}","ALFKI")
                // 下面寫法簡潔
    
                // 方法一
                //IEnumerable<Customer> custs = db.ExecuteQuery<Customer>( "select * from Customers where CustomerID={0}", "ALFKI");
                // 方法二
                object[] para = { "ALFKI", "Berlin" };
                IEnumerable<Customer> custs = db.ExecuteQuery<Customer>("SELECT * FROM Customers WHERE CustomerID={0} AND city={1}", para);
    
                foreach (var c in custs)
                {
                    Console.WriteLine("customerID:{0}", c.CustomerID);
                }
            }

    4 执行 DMLinsert 语句

     // insert 語句
            private void btnInsertSql_Click(object sender, EventArgs e)
            {
                db.Log = Console.Out;
    
                object[] para = { "JIM", "TOM", "TOM" };
                int ret = db.ExecuteCommand(" INSERT INTO Customers(CustomerID, CompanyName, ContactName) VALUES({0},{1},{2}) ", para);
                MessageBox.Show("insert successfully");
            }

    5执行 DMLupdate语句

     private void btnUpdateSql_Click(object sender, EventArgs e)
            {
                object[] para = { "TOM2", "TOM2", "JIM" };
                int ret = db.ExecuteCommand(" UPDATE Customers SET CompanyName={0}, ContactName={1} WHERE CustomerID={2} ", para);
                MessageBox.Show("update successfully");
            }

    6执行 DMLdelete语句

            // delete 語句
            private void btnDeleteSql_Click(object sender, EventArgs e)
            {
                int ret = db.ExecuteCommand(" DELETE Customers WHERE CustomerID={0} ", "JIM");
                MessageBox.Show("delete successfully");
            }

    7 执行存储过程

            // Exceute Procedure
            private void btnExecProcedure_Click(object sender, EventArgs e)
            {
                object[] para = { "JIM" };
                int ret = db.ExecuteCommand("exec DeleteCustomer {0}", para);
                MessageBox.Show("Exceute successfully");
            }

    8 注意

    (1)参数数组元素的个数不能少于SQL语句的参数个数(用{}表示的),例如

    object[] para = { "JIM", "TOM", "TOM","other","other2" };
    int ret = db.ExecuteCommand(" INSERT INTO Customers(CustomerID, CompanyName, ContactName) VALUES({0},{1},{2}) ", para);

    否则异常FormatException

    image

    (2)如果有任一参数为 null,则会转换成 DBNull.Value

  • 相关阅读:
    坚决不再犯的脑残错误
    2018.8.21提高A&省选组模拟考试
    2018.10.9模拟考试
    fread()快读
    2018.10.6模拟考试
    2018.10.4模拟考试
    2018.8.20提高AB组模拟考试
    2018.8.21提高AB组模拟考试
    2018.8.19提高B组模拟考试
    2018.8.18提高B组模拟试题
  • 原文地址:https://www.cnblogs.com/htht66/p/2306834.html
Copyright © 2011-2022 走看看