exponenta event banner

databasePreparedStatement

Создать подготовленную инструкцию SQL

Описание

пример

pstmt = databasePreparedStatement(conn,query) создает SQLPreparedStatement с использованием подключения к базе данных и SQL-запроса.

Примеры

свернуть все

Создайте подготовленную инструкцию SQL для импорта данных из базы данных Microsoft ® SQL Server ® с использованием подключения к базе данных JDBC. Используйте SELECT Инструкция SQL для запроса SQL. Импортируйте данные из базы данных и просмотрите результаты.

Создайте подключение базы данных JDBC к базе данных SQL Server с проверкой подлинности Windows ®. Укажите пустое имя пользователя и пароль .

datasource = 'MSSQLServerJDBCAuth';
conn = database(datasource,'','');

Создайте инструкцию SQL, подготовленную для импорта данных из базы данных SQL Server с использованием подключения базы данных JDBC. Вопросительные знаки в SELECT Инструкция SQL указывает, что она является подготовленной инструкцией SQL. Этот оператор выбирает все данные из таблицы базы данных inventoryTable для запаса с датой инвентаризации в указанном диапазоне дат.

query = strcat("SELECT * FROM inventoryTable ", ...
    "WHERE inventoryDate > ? AND inventoryDate < ?");
pstmt = databasePreparedStatement(conn,query)
pstmt = 
  SQLPreparedStatement with properties:

           SQLQuery: "SELECT * FROM inventoryTable where inventoryDate > ? AND inventoryDate < ?"
     ParameterCount: 2
     ParameterTypes: ["string"    "string"]
    ParameterValues: {[]  []}

pstmt является SQLPreparedStatement объект со следующими свойствами:

  • SQLQuery - Запрос подготовленной инструкции SQL

  • ParameterCount - Счетчик параметров

  • ParameterTypes - Типы параметров

  • ParameterValues - Значения параметров

Привязка значений параметров в подготовленной инструкции SQL. Выберите оба параметра в подготовленной инструкции SQL, используя их числовые индексы. Укажите значения для привязки в качестве диапазона дат запасов между 1 января 2014 года и 31 декабря 2014 года. Сопоставление формата дат в базе данных. bindParamValues функция обновляет значения в ParameterValues имущества pstmt объект.

selection = [1 2];
values = {"2014-01-01 00:00:00.000", ...
    "2014-12-31 00:00:00.000"};
pstmt = bindParamValues(pstmt,selection,values)
pstmt = 
  SQLPreparedStatement with properties:

           SQLQuery: "SELECT * FROM inventoryTable where inventoryDate > ? AND inventoryDate < ?"
     ParameterCount: 2
     ParameterTypes: ["string"    "string"]
    ParameterValues: {["2014-01-01 00:00:00.000"]  ["2014-12-31 00:00:00.000"]}

Импорт данных из базы данных с помощью fetch функции и связанных значений параметров. Результаты содержат четыре строки данных, которые представляют все запасы с датой инвентаризации в период с 1 января 2014 года по 31 декабря 2014 года.

results = fetch(conn,pstmt)
results=4×4 table
    productNumber    Quantity    Price         inventoryDate     
    _____________    ________    _____    _______________________

          1            1700      14.5     {'2014-09-23 09:38:34'}
          2            1200         9     {'2014-07-08 22:50:45'}
          3             356        17     {'2014-05-14 07:14:28'}
          7            6034        16     {'2014-08-06 08:38:00'}

Закройте подготовленную инструкцию SQL и подключение к базе данных.

close(pstmt)
close(conn)

Создайте инструкцию SQL, подготовленную для вставки данных из MATLAB ® в базу данных Microsoft ® SQL Server ® с использованием подключения к базе данных JDBC. Используйте INSERT Инструкция SQL для запроса SQL. Выполните подготовленную инструкцию SQL и просмотрите результаты.

Создайте подключение базы данных JDBC к базе данных SQL Server с проверкой подлинности Windows ®. Укажите пустое имя пользователя и пароль .

datasource = 'MSSQLServerJDBCAuth';
conn = database(datasource,'','');

Импорт данных из базы данных с помощью sqlread функция. Отображение последних нескольких строк данных в таблице базы данных inventoryTable.

tablename = "inventoryTable";
data = sqlread(conn,tablename);
tail(data,3)
ans=3×4 table
    productNumber    Quantity    Price         inventoryDate     
    _____________    ________    _____    _______________________

         11             567         0     {'2012-09-11 00:30:24'}
         12            1278         0     {'2010-10-29 18:17:47'}
         13            1700      14.5     {'2009-05-24 10:58:59'}

Создайте инструкцию SQL, подготовленную для вставки данных с помощью подключения к базе данных JDBC. Вопросительные знаки в INSERT Инструкция SQL указывает, что она является подготовленной инструкцией SQL. Эта инструкция вставляет данные из MATLAB в таблицу базы данных inventoryTable.

query = "INSERT INTO inventoryTable VALUES(?,?,?,?)";
pstmt = databasePreparedStatement(conn,query)
pstmt = 
  SQLPreparedStatement with properties:

           SQLQuery: "INSERT INTO inventoryTable values(?,?,?,?)"
     ParameterCount: 4
     ParameterTypes: ["numeric"    "numeric"    "numeric"    "string"]
    ParameterValues: {[]  []  []  []}

pstmt является SQLPreparedStatement объект со следующими свойствами:

  • SQLQuery - Запрос подготовленной инструкции SQL

  • ParameterCount - Счетчик параметров

  • ParameterTypes - Типы параметров

  • ParameterValues - Значения параметров

Привязка значений параметров в подготовленной инструкции SQL. Выберите все параметры в подготовленной инструкции SQL, используя их числовые индексы. Укажите значения для привязки к номеру продукта, количеству, цене и дате инвентаризации. Сопоставление формата дат в базе данных. bindParamValues функция обновляет значения в ParameterValues имущества pstmt объект.

selection = [1 2 3 4];
values = {20,1000,55,"2019-04-25 00:00:00.000"};
pstmt = bindParamValues(pstmt,selection,values)
pstmt = 
  SQLPreparedStatement with properties:

           SQLQuery: "INSERT INTO inventoryTable values(?,?,?,?)"
     ParameterCount: 4
     ParameterTypes: ["numeric"    "numeric"    "numeric"    "string"]
    ParameterValues: {[20]  [1000]  [55]  ["2019-04-25 00:00:00.000"]}

Вставка данных из MATLAB в базу данных с использованием связанных значений параметров. Выполнение SQL INSERT оператор с использованием execute функция.

execute(conn,pstmt)

Отображение вставленных данных в таблице базы данных inventoryTable. Последняя строка таблицы содержит вставленные данные.

tablename = "inventoryTable";
data = sqlread(conn,tablename);
tail(data,4)
ans=4×4 table
    productNumber    Quantity    Price           inventoryDate       
    _____________    ________    _____    ___________________________

         11             567         0     {'2012-09-11 00:30:24'    }
         12            1278         0     {'2010-10-29 18:17:47'    }
         13            1700      14.5     {'2009-05-24 10:58:59'    }
         20            1000        55     {'2019-04-25 00:00:00.000'}

Закройте подготовленную инструкцию SQL и подключение к базе данных.

close(pstmt)
close(conn)

Создайте подготовленную инструкцию SQL для обновления данных в базе данных Microsoft ® SQL Server ® с использованием подключения к базе данных JDBC. Используйте UPDATE Инструкция SQL для запроса SQL. Выполните подготовленную инструкцию SQL и просмотрите результаты.

Создайте подключение базы данных JDBC к базе данных SQL Server с проверкой подлинности Windows ®. Укажите пустое имя пользователя и пароль .

datasource = 'MSSQLServerJDBCAuth';
conn = database(datasource,'','');

Импорт данных из базы данных с помощью sqlread функция. Отображение первых нескольких строк данных в таблице базы данных inventoryTable.

tablename = "inventoryTable";
data = sqlread(conn,tablename);
head(data,3)
ans=3×4 table
    productNumber    Quantity    Price         inventoryDate     
    _____________    ________    _____    _______________________

          1            1700      14.5     {'2014-09-23 09:38:34'}
          2            1200         9     {'2014-07-08 22:50:45'}
          3             356        17     {'2014-05-14 07:14:28'}

Создайте инструкцию SQL, подготовленную для обновления данных с помощью подключения к базе данных JDBC. Вопросительные знаки в UPDATE Инструкция SQL указывает, что она является подготовленной инструкцией SQL. Эта инструкция обновляет данные в таблице базы данных inventoryTable.

query = strcat("UPDATE inventoryTable SET Quantity = ? ", ...
    "WHERE productNumber = ?");
pstmt = databasePreparedStatement(conn,query)
pstmt = 
  SQLPreparedStatement with properties:

           SQLQuery: "UPDATE inventoryTable SET Quantity = ? WHERE productNumber = ?"
     ParameterCount: 2
     ParameterTypes: ["numeric"    "numeric"]
    ParameterValues: {[]  []}

pstmt является SQLPreparedStatement объект со следующими свойствами:

  • SQLQuery - Запрос подготовленной инструкции SQL

  • ParameterCount - Счетчик параметров

  • ParameterTypes - Типы параметров

  • ParameterValues - Значения параметров

Привязка значений параметров в подготовленной инструкции SQL. Выберите все параметры в подготовленной инструкции SQL, используя их числовые индексы. Укажите значения для привязки количества и номера продукта. bindParamValues функция обновляет значения в ParameterValues имущества pstmt объект.

selection = [1 2];
values = {2000,1};
pstmt = bindParamValues(pstmt,selection,values)
pstmt = 
  SQLPreparedStatement with properties:

           SQLQuery: "UPDATE inventoryTable SET Quantity = ? WHERE productNumber = ?"
     ParameterCount: 2
     ParameterTypes: ["numeric"    "numeric"]
    ParameterValues: {[2000]  [1]}

Обновление данных в базе данных с использованием связанных значений параметров. Выполнение SQL UPDATE оператор с использованием execute функция.

execute(conn,pstmt)

Отображение обновленных данных в таблице базы данных inventoryTable. Первая строка таблицы содержит обновленное количество.

tablename = "inventoryTable";
data = sqlread(conn,tablename);
head(data,3)
ans=3×4 table
    productNumber    Quantity    Price         inventoryDate     
    _____________    ________    _____    _______________________

          1            2000      14.5     {'2014-09-23 09:38:34'}
          2            1200         9     {'2014-07-08 22:50:45'}
          3             356        17     {'2014-05-14 07:14:28'}

Закройте подготовленную инструкцию SQL и подключение к базе данных.

close(pstmt)
close(conn)

Создайте инструкцию SQL, подготовленную для удаления данных в базе данных Microsoft ® SQL Server ® с помощью подключения к базе данных JDBC. Используйте DELETE Инструкция SQL для запроса SQL. Выполните подготовленную инструкцию SQL и просмотрите результаты.

Создайте подключение базы данных JDBC к базе данных SQL Server с проверкой подлинности Windows ®. Укажите пустое имя пользователя и пароль .

datasource = 'MSSQLServerJDBCAuth';
conn = database(datasource,'','');

Импорт данных из базы данных с помощью sqlread функция. Отображение строк данных в таблице базы данных productTable. Данные содержат строки для номеров продуктов. 16 через 20, который будет удален позже в этом примере.

tablename = "productTable";
data = sqlread(conn,tablename)
data=15×5 table
    productNumber    stockNumber    supplierNumber    unitCost    productDescription 
    _____________    ___________    ______________    ________    ___________________

          9          1.2597e+05          1003            13       {'Victorian Doll' }
          8          2.1257e+05          1001             5       {'Train Set'      }
          7          3.8912e+05          1007            16       {'Engine Kit'     }
          2          4.0031e+05          1002             9       {'Painting Set'   }
          4          4.0034e+05          1008            21       {'Space Cruiser'  }
          1          4.0035e+05          1001            14       {'Building Blocks'}
          5          4.0046e+05          1005             3       {'Tin Soldier'    }
          6          4.0088e+05          1004             8       {'Sail Boat'      }
          3            4.01e+05          1009            17       {'Slinky'         }
         10          8.8865e+05          1006            24       {'Teddy Bear'     }
         16          5.6789e+05          1001            10       {'Magnetic Links' }
         17           5.688e+05          1002            15       {'Hot Rod'        }
         18           5.679e+05          1003            20       {'Doll House'     }
         19          5.7761e+05          1004            25       {'Plush Monkey'   }
         20          5.0034e+05          1005            30       {'Kitchen Set'    }

Создайте инструкцию SQL, подготовленную для удаления данных с помощью подключения к базе данных JDBC. Вопросительные знаки в DELETE Инструкция SQL указывает, что она является подготовленной инструкцией SQL. Эта инструкция удаляет данные из таблицы базы данных productTable для указанного диапазона номеров продуктов.

query = strcat("DELETE FROM productTable ", ...
    "WHERE productNumber > ? AND productNumber < ?");
pstmt = databasePreparedStatement(conn,query)
pstmt = 
  SQLPreparedStatement with properties:

           SQLQuery: "DELETE FROM productTable WHERE productNumber > ? AND productNumber < ?"
     ParameterCount: 2
     ParameterTypes: ["numeric"    "numeric"]
    ParameterValues: {[]  []}

pstmt является SQLPreparedStatement объект со следующими свойствами:

  • SQLQuery - Запрос подготовленной инструкции SQL

  • ParameterCount - Счетчик параметров

  • ParameterTypes - Типы параметров

  • ParameterValues - Значения параметров

Привязка значений параметров в подготовленной инструкции SQL. Выберите все параметры в подготовленной инструкции SQL, используя их числовые индексы. Укажите значения для привязки для диапазона номеров продуктов от 15 до 21 (эксклюзивно). bindParamValues функция обновляет значения в ParameterValues имущества pstmt объект.

selection = [1 2];
values = {15,21};
pstmt = bindParamValues(pstmt,selection,values)
pstmt = 
  SQLPreparedStatement with properties:

           SQLQuery: "DELETE FROM productTable WHERE productNumber > ? AND productNumber < ?"
     ParameterCount: 2
     ParameterTypes: ["numeric"    "numeric"]
    ParameterValues: {[15]  [21]}

Удалите данные в базе данных с помощью связанных значений параметров. Выполнение SQL DELETE оператор с использованием execute функция.

execute(conn,pstmt)

Отображение данных в таблице базы данных productTable. Строки с номерами продуктов 16 через 20 больше не находятся в таблице.

tablename = "productTable";
data = sqlread(conn,tablename)
data=10×5 table
    productNumber    stockNumber    supplierNumber    unitCost    productDescription 
    _____________    ___________    ______________    ________    ___________________

          9          1.2597e+05          1003            13       {'Victorian Doll' }
          8          2.1257e+05          1001             5       {'Train Set'      }
          7          3.8912e+05          1007            16       {'Engine Kit'     }
          2          4.0031e+05          1002             9       {'Painting Set'   }
          4          4.0034e+05          1008            21       {'Space Cruiser'  }
          1          4.0035e+05          1001            14       {'Building Blocks'}
          5          4.0046e+05          1005             3       {'Tin Soldier'    }
          6          4.0088e+05          1004             8       {'Sail Boat'      }
          3            4.01e+05          1009            17       {'Slinky'         }
         10          8.8865e+05          1006            24       {'Teddy Bear'     }

Закройте подготовленную инструкцию SQL и подключение к базе данных.

close(pstmt)
close(conn)

Создайте подготовленную инструкцию SQL для вызова хранимой процедуры в базе данных Microsoft ® SQL Server ® с использованием подключения к базе данных JDBC. Используйте CALL Инструкция SQL для запроса SQL. Выполните подготовленную инструкцию SQL и просмотрите результаты.

В этом примере база данных SQL Server содержит хранимую процедуру getSupplierInfo, которая возвращает информацию для поставщиков в указанном городе. Этот код определяет процедуру.

CREATE PROCEDURE dbo.getSupplierInfo
    (@cityName varchar(20))
AS
BEGIN
  	-- SET NOCOUNT ON added to prevent extra result 
	-- sets from interfering with SELECT statements.
	SET NOCOUNT ON
    SELECT * FROM dbo.suppliers WHERE City = @cityName
END

Для SQL Server оператор SET NOCOUNT ON подавляет результаты INSERT, UPDATE, и не -SELECT заявления, предшествующие окончательному SELECT , чтобы можно было импортировать результаты SELECT запрос.

Создайте подключение базы данных JDBC к базе данных SQL Server с проверкой подлинности Windows ®. Укажите пустое имя пользователя и пароль .

datasource = "MSSQLServerJDBCAuth";
conn = database(datasource,'','');

Создайте инструкцию SQL, подготовленную для вызова хранимой процедуры с помощью подключения базы данных JDBC. Вопросительные знаки в CALL Инструкция SQL указывает, что она является подготовленной инструкцией SQL. Этот оператор вызывает getSupplierInfo хранимая процедура в базе данных.

query = "{CALL dbo.getSupplierInfo(?)}";
pstmt = databasePreparedStatement(conn,query)
pstmt = 
  SQLPreparedStatement with properties:

           SQLQuery: "{CALL dbo.getSupplierInfo(?)}"
     ParameterCount: 1
     ParameterTypes: "string"
    ParameterValues: {[]}

pstmt является SQLPreparedStatement объект со следующими свойствами:

  • SQLQuery - Запрос подготовленной инструкции SQL

  • ParameterCount - Счетчик параметров

  • ParameterTypes - Типы параметров

  • ParameterValues - Значения параметров

Привязка значений параметров в подготовленной инструкции SQL. Выберите параметр в подготовленной инструкции SQL, используя его числовой индекс. Укажите значение для привязки в качестве города New York. bindParamValues функция обновляет значения в ParameterValues имущества pstmt объект.

selection = [1];
values = "New York";
pstmt = bindParamValues(pstmt,selection,values)
pstmt = 
  SQLPreparedStatement with properties:

           SQLQuery: "{CALL dbo.getSupplierInfo(?)}"
     ParameterCount: 1
     ParameterTypes: "string"
    ParameterValues: {["New York"]}

Отображение результатов хранимой процедуры. Выполнение SQL CALL оператор с использованием fetch функция. Подготовленная инструкция SQL возвращает всю информацию для поставщиков, расположенных в Нью-Йорке.

results = fetch(conn,pstmt)
results=2×5 table
    SupplierNumber        SupplierName            City             Country            FaxNumber    
    ______________    ____________________    ____________    _________________    ________________

         1001         {'Wonder Products' }    {'New York'}    {'United States'}    {'212 435 1617'}
         1006         {'ACME Toy Company'}    {'New York'}    {'United States'}    {'212 435 1618'}

Закройте подготовленную инструкцию SQL и подключение к базе данных.

close(pstmt)
close(conn)

Входные аргументы

свернуть все

Подключение к базе данных, указанное как connection объект, созданный с помощью database функция.

Примечание

databasePreparedStatement поддерживает только подключение к базе данных JDBC.

SQL подготовил запрос инструкции, указанный как вектор символов или строковый скаляр, содержащий одну из следующих инструкций SQL:

  • SELECT

  • INSERT

  • UPDATE

  • DELETE

  • CALL

Пример: "SELECT * FROM inventoryTable WHERE inventoryDate > ? AND inventoryDate < ?" выбирает все данные из таблицы базы данных inventoryTable с датой инвентаризации между двумя параметрами.

Пример: "INSERT INTO inventoryTable VALUES(?,?,?,?)" вставляет данные в таблицу базы данных inventoryTable на основе параметров для четырех столбцов базы данных.

Типы данных: char | string

Выходные аргументы

свернуть все

Подготовленная инструкция SQL, возвращенная как SQLPreparedStatement объект.

Представлен в R2019b